正则表达式匹配如果模式在句子的开头,则句子的末尾被白色空格包围

时间:2012-05-23 17:32:33

标签: java regex

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

如果我这样做\\Wmypattern\\W,它会找到被白色空间包围的图案。

但如果我这样做[^\\W]mypattern[\\W$]则没有。如果模式存在于字符串的开头,字符串的结尾或者从字符串的结尾开始或结束,则后一个正则表达式是我尝试使其匹配。

我做错了什么?

2 个答案:

答案 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