我在 java 中使用以下正则表达式来尝试查找模式是在字符串的开头、字符串的结尾还是被空格包围但它不起作用。
如果我这样做,\\Wmypattern\\W
它会发现被空白包围的图案。
但如果我这样做[^\\W]mypattern[\\W$]
,它不会。如果模式存在于字符串的开头、字符串的结尾或从字符串的开头或结尾,则后一个正则表达式是我尝试让它匹配。
我究竟做错了什么?
你想用
(^|\\W)mypattern(\\W|$)
这将匹配模式开头的非单词字符或字符串的开头,以及模式末尾的非单词字符或字符串的结尾。
您当前的模式匹配一个不是非单词字符 ( [^\\W]
) 的单个字符,后跟您的模式,后跟非单词字符或文字字符$
( [\\W$]
)
这个页面是正则表达式语法的一个很好的参考
你必须把^
和放在$
外面[]
。你现在正在逃避它。
通过指定[\\W]mypattern[\\W]
它意味着被非单词字符包围。我想你想使用[\\s]
, 一个空格字符。有关更多信息,请参阅正则表达式。
如果要在开头或结尾匹配,则必须执行以下操作:
^mypattern: beginning of the string
mypattern$: end of the string