正则表达式中的 @ 符号(at符号)

6
我不能在正则表达式中使用 @ 吗? 例如: (?is).*\bhello\b.* 可以匹配 hello,但是
(?is).*\b@hello\b.* 无法匹配 @hello
以下是一些例子。 这个 可以工作,但是这个 不行。
有人能解释一下原因吗?另外,这个 也不行。
1个回答

7

因为这是与\b(单词边界)有关。

\b匹配一个\w和一个\W字符之间(反之亦然),或者在字符串的开头/结尾和\w之间。但是,@不是\w字符(而h\w字符)。所以没有匹配。


1
有什么方法可以解决这个问题? - hexagonest
@DoorKnob,在@之前删除\b - falsetru
@DoorKnob,尝试使用(^|\W)@hello - falsetru
但是,String.matches()不匹配hi @hello。抱歉,我有点困惑。编辑:没事,我懂了。.*(^|\W)@hello - hexagonest
1
@naz786,这是verbatim string literal。它使转义序列被字面解释变得容易。对于给定的正则表达式,没有转义字符,因此它们之间没有区别。 - falsetru
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接