有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项

我有这样一个字符串:

String foo = "James Padolsky , Jimmy\\,Hoffa , Jane"

,进行常规拆分将导致Jimmy\,Hoffa也被拆分

就这样吧

  1. James Padolsky
  2. Jimmy\
  3. Hoffa
  4. Jane

我需要的是

  1. James Padolsky
  2. Jimmy\,Hoffa
  3. Jane

因此正则表达式应该忽略\,,并且只被,
分割 什么正则表达式将给我上述拆分


共 (2) 个答案

  1. # 1 楼答案

    您可以使用negative lookbehind

    (?<!\\),
    

    作为一个Java字符串,它应该是"(?<!\\\\),"

  2. # 2 楼答案

    下面是一个包含必需逗号和可选空格的简单解决方案:

    String foo = "James Padolsky , Jimmy\\,Hoffa , Jane";
    String[] splitted = foo.split("\\s?,\\s?");
    for (String split: splitted) {
        System.out.println(split);
    }
    

    输出:

    James Padolsky
    Jimmy\,Hoffa
    Jane
    

    注意:foo中反斜杠上的双转义。否则String初始化将无法编译