Scala:匹配特殊字符

Dar*_*oth 2 regex scala

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

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

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

结果例外:

 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)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Avi*_*Raj 5

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

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

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

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

  • 你需要匹配反斜杠,有些不需要转义.``[! - 〜@#$ ^%*()_ + = {} \\ [\\] |;:\"'`<,>/\\\\.?]`` (3认同)