0

我在 java 中使用以下正则表达式来尝试查找模式是在字符串的开头、字符串的结尾还是被空格包围但它不起作用。

如果我这样做,\\Wmypattern\\W它会发现被空白包围的图案。

但如果我这样做[^\\W]mypattern[\\W$],它不会。如果模式存在于字符串的开头、字符串的结尾或从字符串的开头或结尾,则后一个正则表达式是我尝试让它匹配。

我究竟做错了什么?

4

2 回答 2

2

你想用

(^|\\W)mypattern(\\W|$)

这将匹配模式开头的非单词字符字符串的开头,以及模式末尾的非单词字符或字符串的结尾

您当前的模式匹配一​​个不是非单词字符 ( [^\\W]) 的单个字符,后跟您的模式,后跟非单词字符或文字字符$( [\\W$])

这个页面是正则表达式语法的一个很好的参考

于 2012-05-23T17:36:44.807 回答
1

你必须把^和放在$外面[]。你现在正在逃避它。

通过指定[\\W]mypattern[\\W]它意味着被非单词字符包围。我想你想使用[\\s], 一个空格字符。有关更多信息,请参阅正则表达式

如果要在开头或结尾匹配,则必须执行以下操作:

^mypattern: beginning of the string
mypattern$: end of the string
于 2012-05-23T17:34:09.243 回答