2015-03-19 57 views
0

我试图做这样的事情在我的OSX终端这是为什么grep的组失败

> grep -i "((\D*)ful)" ./Myfile.rtf 

然而,上述语句失败当我做这个

> grep -i "\D*ful" ./Myfile.rtf 

它传递 - 确实grep的有正则表达式组的问题

回答

2

由于基本grep使用BRE,因此您需要使用\(..\)来捕获组。

grep -i "\(\(\D*\)ful\)" ./Myfile.rtf 
2

发生此类事情时最可能发生的问题是特殊字符是否特殊。在这种情况下,我认为括号并不特殊,除非你引用它们,所以:

> grep -i "\(\(\D*\)ful\)" ./Myfile.rtf 

可能会更好。

[正则表达式的一个刺激是已经发展到它们如何被写入的变化...]