2

我有一个这样的字符串:

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

所以正则表达式应该忽略\,并且只拆分,
什么正则表达式会给我上面的拆分?

4

2 回答 2

5

您可以使用否定的lookbehind

(?<!\\),

作为一个 Java 字符串,那将是"(?<!\\\\),".

于 2013-08-14T18:46:55.257 回答
1

这是一个带有必需逗号和可选空格的简单解决方案:

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初始化将无法编译。

于 2013-08-14T18:49:21.403 回答