Scala:匹配特殊字符

时间:2014-09-23 11:45:13

标签: regex scala

在Scala中,我需要测试一个字符串是否具有以下任何一个特殊的&#39;字符:!@#\$^%&*()_-\+={}[]|;:"'<,>.?/

我不能简单地使用'nonword' "\\W"正则表达式,因为字符串可能包含正则表达式"\\W"匹配的西里尔字符。试图使用正则表达式:

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

导致异常:

 java.util.regex.PatternSyntaxException: Illegal repetition near index 17 ~`!@#\$^%&*()_-\+={}[]|;:"'<,>.?/
                                                                                           ^
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)

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

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

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

如果你想增加空间,那么它应该是

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