匹配不以 abc 开头的单词
目标
匹配不以 abc 开头的单词
分析
从单词的开始位置开始匹配,可以用 \b
匹配单词的开始位置。
\b
"不以 abc 开头",也就是说:"单词的开始位置的右边不是 abc"
匹配这种"在某个位置的左边/或右边不是xxx"的需求,需要用到正则表达式中的
环视功能,在这里先简单介绍一下正则表达式中环视(lookaround)的概念
环视
环视结构不匹配任何字符,只匹配文本中的特定位置,
这一点与单词分界符\b
、锚点^
和$
相似。四种类型的环视
类型 正则表达式 匹配成功的条件... 肯定逆序环视
否定逆序环视(?<=......)
(?<!......)子表达式能够匹配左侧文本
子表达式不能匹配左侧文本肯定顺序环视
否定顺序环视(?=......)
(?!......)子表达式能够匹配右侧文本
子表达式不能匹配右侧文本
由上可知,"右边不是 abc" 可以使用否定顺序环视
(?!abc)
可以用 \w
匹配单个单词字符
最终的正则表达式
\b(?!abc)\w+
不使用 \b
:
(?<!\w)(?=\w)(?!abc)\w+
留个问题:如何匹配不包含 abc 的单词。
以上,请大家多多指教。
Copyright © Mozillazg's Blog.
Original materia is licensed under
BY-NC-SA