2

我需要在 Java 中执行以下正则表达式:

在每个逗号处拆分一个字符串,该字符串前面没有反斜杠(即转义),后跟零个或多个空格。

我一直在尝试这个:

String str = "Name=Doe\, Jane, Hobby=Skiing, Height=1.70";
String[] parts = str.split("[^\\],\s*");

这是 Perl 中的正确语法并在那里工作。在 Java 中并非如此。

以上在编译过程中已经抛出异常:

error: illegal escape character
    String[] parts = str.split("[^\\],\s*");

在字符类中添加第三个和第四个反斜杠没有帮助

str.split("[^\\\\],\s*");

在空白处添加第二个反斜杠允许它编译,

String[] parts = str.split("[^\\],\\s*");

但随后出现运行regex.PatternSyntaxException时,说明unclosed character class

java.util.regex.PatternSyntaxException: Unclosed character class
near index 7
[^\],\s*
       ^

显然缺少一个反斜杠,我无法将其输入...谁能告诉我这应该如何在 Java 中完成?

谢谢!

4

1 回答 1

0

regex可以满足您的需求。您忘记添加两个额外的\\

String[] parts = str.split("[^\\\\],\\s*");

就像在这个问题中解释的那样:(java regex pattern unclosed character class

于 2016-06-11T09:58:48.287 回答