代码之家  ›  专栏  ›  技术社区  ›  Morgan

提取逗号之间不带引号的值

  •  0
  • Morgan  · 技术社区  · 6 年前

    假设我有一个字符串,比如 'John','Smith' .我希望我的正则表达式提取值 John Smith 来自该字符串,不带逗号和引号。我环顾了一下网站,找到了一个解决方案,去掉了逗号,但没有引号。

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

    这样我就可以 'John' 'Smith' 。当然,我可以简单地在 Matcher 像这样手动删除引号,但我想知道是否有更直接的解决方案使用regex而不必求助于 replaceAll

    Pattern pat = Pattern.compile("(?:^|(?<=,))[^,]*");
    Matcher matcher = pat.matcher("'John', 'Smith'");
    List<String> matches = new ArrayList<>();
    while (matcher.find()) {
        matches.add(matcher.group().replaceAll("'", ""));
    }
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Pankaj Singhal    6 年前

    以下正则表达式将起作用: "[^,']+"

    以下是更新的代码。

    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]
    
        2
  •  0
  •   dev    6 年前

    我尝试了这段代码,它给出了不带单引号的输出字符串:

    public class SubstringExample{
    public static void main(String args[]){
    String nameStr="'John','Smith'";
    String newNameStr = nameStr.replaceAll("\'","");
    System.out.println(newNameStr);
    }}