【问题标题】:Scala: matching special charactersScala:匹配特殊字符
【发布时间】:2014-09-23 11:45:12
【问题描述】:

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

我不能简单地使用 '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)

有什么想法吗?

【问题讨论】:

  • 将所有字符放入字符类。 [~!@#\\$^%&amp;*\\(\\)_+=\\{\\}\\[\\]|;:\"'&lt;,&gt;.?-]
  • 谢谢,它适用于所有字符,除了 [` \ /] 如何添加这些?
  • 您是否要添加空格` `?在下面的答案中,我在字符类中添加了一个正斜杠和一个反引号。

标签: regex scala


【解决方案1】:

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

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

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

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

【讨论】:

  • 你也需要匹配反斜杠,有些不需要转义。 [-~!@#$^%&amp;*()_+={}\\[\\]|;:\"'`&lt;,&gt;.?/\\\\]
  • @hwnd:谢谢!这涵盖了所有这些!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 2013-07-20
  • 2016-11-13
相关资源
最近更新 更多