在没有引号的逗号之间提取值

时间:2018-04-14 03:53:05

标签: java regex

我们说我有一个字符串,例如'John','Smith'。我希望我的正则表达式从该字符串中提取值JohnSmith,而不使用逗号和引号。我环顾了网站,发现了一个摆脱逗号的解决方案,但不是引号。

这是我试过的正则表达式(?:^|(?<=,))[^,]*

我得到'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("'", ""));
}

2 个答案:

答案 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);
}}