我确信之前已经提出这个问题,但我似乎无法找到它(或者知道要搜索的正确措辞)
基本上我想要一个匹配除连字符之外的所有非字母数字的正则表达式。所以基本上匹配\ W +除了排除' - '我不知道如何从预制组中排除特定的。
答案 0 :(得分:8)
\W
是[^\w]
的简写。所以:
[^\w-]+
一些背景知识:
[…]
定义了一套[^…]
否定了一套\v
(小写)集合都被\V
(大写)否定,其中V是定义集合的任何字母。[[:alpha:]]
和[[:alnum:]]
答案 1 :(得分:1)
[^\w-]+
会做到这一点。匹配除{连字符号以外的\w
集合中的任何字符。
答案 2 :(得分:1)
您可以使用:
[^a-zA-Z0-9_-]
或
[^\w-]
匹配单个非连字符,非字母数字。要将一个或多个前缀与+
答案 3 :(得分:0)
在Java7或更高版本中,您需要添加(?U)
前缀以匹配所有区域设置特定字符。 e.g。
(?U)[^\w-]
在Java字符串中(您需要将\
字符转义为另一个字符):
(?U)[^\\w-]