字符类中的java正则表达式双反斜杠



我需要在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中应该如何做到这一点吗?

thx!

这个regex可以执行您想要的操作。您忘记添加两个额外的\:

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

就像这个问题中解释的那样:(java正则表达式模式未闭合字符类)

最新更新