我在java中使用以下正则表达式来尝试查找模式是在字符串的开头,字符串的末尾,还是由空格包围但是它不起作用。
如果我这样做\\Wmypattern\\W
,它会找到被白色空间包围的图案。
但如果我这样做[^\\W]mypattern[\\W$]
则没有。如果模式存在于字符串的开头,字符串的结尾或者从字符串的结尾开始或结束,则后一个正则表达式是我尝试使其匹配。
我做错了什么?
答案 0 :(得分:2)
您想要使用
(^|\\W)mypattern(\\W|$)
这将匹配 非单词字符或模式开头的字符串的开头, 非单词字符或结尾字符串在模式的末尾。
您当前的模式匹配的单个字符不是非单词字符([^\\W]
),后跟您的模式,后跟非单词字符或文字字符$
({ {1}})
This page是正则表达式语法的好参考
答案 1 :(得分:1)
您必须将^
和$
放在[]
之外。你现在正在逃避它。
通过指定[\\W]mypattern[\\W]
,它意味着被非单词字符包围。我想你想用[\\s]
这个空格字符。有关详细信息,请参阅regex。
如果你想在开头或结尾匹配,你必须做这样的事情:
^mypattern: beginning of the string
mypattern$: end of the string