java 字符中的正则表达式双反斜杠 class
java regex double-backslash in character class
我需要在 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*");
在字符 class 中添加第三个和第四个反斜杠没有帮助
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 中应该怎么做?
谢谢!
这 regex
做你想做的。您忘记添加两个额外的 \
:
String[] parts = str.split("[^\\],\s*");
就像这个问题中解释的那样:(java regex pattern unclosed character class)
我需要在 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*");
在字符 class 中添加第三个和第四个反斜杠没有帮助
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 中应该怎么做?
谢谢!
这 regex
做你想做的。您忘记添加两个额外的 \
:
String[] parts = str.split("[^\\],\s*");
就像这个问题中解释的那样:(java regex pattern unclosed character class)