我们说我有一个字符串,例如'John','Smith'
。我希望我的正则表达式从该字符串中提取值John
和Smith
,而不使用逗号和引号。我环顾了网站,发现了一个摆脱逗号的解决方案,但不是引号。
这是我试过的正则表达式(?:^|(?<=,))[^,]*
我得到'John'
和'Smith'
。当然,我可以简单地迭代Matcher
这样并手动删除引号,但我想知道是否有更直接的解决方案使用正则表达式而不必诉诸replaceAll
。< / p>
Pattern pat = Pattern.compile("(?:^|(?<=,))[^,]*");
Matcher matcher = pat.matcher("'John', 'Smith'");
List<String> matches = new ArrayList<>();
while (matcher.find()) {
matches.add(matcher.group().replaceAll("'", ""));
}
答案 0 :(得分:2)
以下正则表达式将起作用:"[^,']+"
。
以下是更新的代码。
public static void main(String[] args) {
String regex = "[^,']+";
Pattern pat = Pattern.compile(regex);
Matcher matcher = pat.matcher("'John', 'Smith'");
List<String> matches = new ArrayList<>();
while (matcher.find()) {
matches.add(matcher.group());
}
System.out.println(matches);
}
输出:
[John, , Smith]
答案 1 :(得分:0)
我尝试了这段代码,它提供的输出字符串没有单引号:
public class SubstringExample{
public static void main(String args[]){
String nameStr="'John','Smith'";
String newNameStr = nameStr.replaceAll("\'","");
System.out.println(newNameStr);
}}