我需要在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正则表达式模式未闭合字符类)