斯卡拉:匹配特殊字符

问题描述:

在斯卡拉我需要测试一个字符串具有以下任何“特殊”字符:[email protected]#\$^%&*()_-\+={}[]|;:"'<,>.?/斯卡拉:匹配特殊字符

我不能简单地用'nonword'"\\W"正则表达式是因为字符串可能有西里尔文字符的正则表达式"\\W"也匹配。尝试使用正则表达式:

new Regex("""~`[email protected]#\$^%&*()_-\+={}[]|;:"'<,>.?/""") 

结果异常:

java.util.regex.PatternSyntaxException: Illegal repetition near index 17 ~`[email protected]#\$^%&*()_-\+={}[]|;:"'<,>.?/ 
                         ^
at java.util.regex.Pattern.error(Pattern.java:1924) 
at java.util.regex.Pattern.closure(Pattern.java:3104) 
at java.util.regex.Pattern.sequence(Pattern.java:2101) 

任何想法?

+2

提出的所有字符为字符类。 '[〜!@#\\ $ ^%&* \\(\\)_ + = \\ {\\} \\ [\\] |;:''。? - ]' – 2014-09-23 11:49:54

+0

谢谢,它适用于所有字符,除了['\ /]如何添加这些? – DarqMoth 2014-09-23 12:19:01

+0

你想添加空格吗?在下面的答案中,我在字符类中添加了一个正斜杠和反斜杠 – 2014-09-23 12:22:12

您需要将所有特殊字符放入字符类中。

[[email protected]#$^%&*\\(\\)_+={}\\[\\]|;:\"'<,>.?`/\\\\-] 

如果你想添加的空间还,那么它应该是

[[email protected]#$^%&*\\(\\)_+={}\\[\\]|;:\"'<,>.?` /\\\\-] 
+2

你需要匹配反斜杠''[ - 〜!@#$ ^%&*()_ + = {} \\ [\\] |;:\“'''。?/ \\ \\]'' – hwnd 2014-09-23 12:25:42

+0

@hwnd:谢谢!这涵盖了所有这些! – DarqMoth 2014-09-23 12:33:17