Java Regex 删除开始/结束单引号但保留在引号内
Posted
技术标签:
【中文标题】Java Regex 删除开始/结束单引号但保留在引号内【英文标题】:Java Regex to remove start/end single quotes but leave inside quotes 【发布时间】:2011-03-19 21:46:18 【问题描述】:我有来自用单引号括起来的 CSV 文件的数据,例如:
'Company name'
'Price: $43.50'
'New York, New York'
我希望能够替换值的开头/结尾处的单引号,但在数据中保留引号,例如:
'Joe's Diner' should become Joe's Diner
我可以的
updateString = theString.replace("^'", "").replace("'$", "");
但我想知道我是否可以将它组合起来只做一次替换。
【问题讨论】:
您想允许不平衡的引号和使用引号来转义单元格中的逗号?不可能同时做到这两点。 是的,你可以很容易地组合它们。再看看@Josiah 的回答,现在他使用了正确的方法。 【参考方案1】:您可以使用 或 运算符。
updateString = theString.replaceAll("(^')|('$)","");
看看这是否适合你:)
【讨论】:
我不得不将其更改为 replaceAll,但后来它起作用了。如果你更新你的答案,我会接受它 我需要与此相反。我想将此 //*[@text='some'Text'] 转换为 //*[@text='some\'Text']【参考方案2】:updateString = theString.replaceFirst("^'(.*)'$", "$1");
请注意,您没有的表单将不起作用,因为 replace
使用文字字符串,而不是正则表达式。
这通过使用捕获组(.*)
起作用,在替换文本中用$1
引用。您还可以执行以下操作:
Pattern patt = Pattern.compile("^'(.*)'$"); // could be stored in a static final field.
Matcher matcher = patt.matcher(theString);
boolean matches = matcher.matches();
updateString = matcher.group(1);
当然,如果您确定开头和结尾都有单引号,最简单的解决方案是:
updateString = theString.substring(1, theString.length() - 1);
【讨论】:
以上是关于Java Regex 删除开始/结束单引号但保留在引号内的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试真题 Java 实现去除多余空格2022.11 Q4 新题
Postgresql regex_replace 逗号,单引号和双引号