【发布时间】:2013-12-23 01:08:07
【问题描述】:
尝试学习正则表达式。
在阅读了http://regular-expressions.info 上关于懒惰、贪婪和否定字符类作为懒惰替代品的this 部分后,我尝试自己使用它,但我不明白为什么以下内容不会工作。
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 所述。如果无法使用否定字符类,我正在寻找原因的解释。
【问题讨论】:
标签: regex bash grep regex-negation