让我先说一下
documentation:
[[:<:>:]]
These markers stand for word boundaries. They match the beginning and
end of words, respectively. A word is a sequence of word characters
that is not preceded by or followed by word characters. A word
character is an alphanumeric character in the alnum class or an
underscore (_).
从文档中我们可以看到问题背后的原因,并不是由于逃避而造成的.问题是你试图在字符串的开头处匹配单词boundary [[:< ;:]],这将无法正常工作,因为你可以从文档中看到的单词边界将单词字符与非单词字符分开-word字符,但在你的情况下,第一个字符是“不是单词字符,所以没有单词边界,最后一个”和[[:>:]].
为了使其工作,您需要将表达式稍微更改为此表达式:
"[[:<:>:]]"
^^^^^^^ ^^^^^^^
注意单词边界如何将非单词字符“与开头的单词字符w和字符串末尾的d”分开.
编辑:如果您总是希望在字符串的开头和结尾使用单词边界而不知道是否存在实际边界,那么您可以使用以下表达式:
([[:<:>:]]|$)
这将匹配开头的字边界或字符串的开头^,并且对于字边界或字符串结尾的结尾相同.我真的建议你研究你想要匹配的数据并寻找常见的模式,如果它们不是正确的工具,就不要使用正则表达式.