尝试学习正则表达式。RegExps:使用否定匹配以字符开头的单词
在阅读this关于http://regular-expressions.info关于懒惰,贪婪和否定字符类别的部分作为懒惰的替代方案之后,我试图单独使用它,但我无法弄清楚为什么以下方法无效。
echo "hello world is this the way?" | grep -oE '\<w[^\>]+\>'
预期输出:
world
way
实际输出:
world is this the way
做文字边界的字符(\< \>
)需要特殊字符类里面逃跑?
我只是在cli(bash 4.2.45,osx mavericks)上进行测试。这是否是一个因素?
我知道\b
也是一个字的边界字符,但如果我使用它,所以正则表达式就像这样:\bw[^\b]+\b
,我得到相同的输出,但它包含问号。
谢谢!
更新:
我正在寻找一个使用否定的字符类,以避免在正则表达式引擎回溯下另类的解释here懒惰答案。如果无法使用否定字符类,我正在寻找解释原因的解释。
没错,但我正在寻找一个使用负面字符类的答案,或者解释为什么在regular-expressions.info上使用负面字符类不起作用。 –
但是,否定的问题是,你将不得不列出你想要排除的所有字符 - 而且我确定有多于你想排除的字边界和问号。 – Szymon
也许我不明白否定。正则表达式引擎不会匹配并在匹配否定字符时返回匹配项吗? –