4

我正在寻找类似的东西:

STRINGONE_****_******_STRINGTWO

我知道 STRINGONE 和 STRINGTWO 的地方。但是,*反映了未知数量的字母(大写)。

我一直在假设

grep -nr "STRINGONE_\w+_\w+_STRINGTWO" .

会工作,但我没有找到匹配项。

我怎样才能正确地制定这个正则表达式(在 cygwin 中使用 grep)?

4

1 回答 1

4

看看手册。没有-E标志,grep假定“基本”正则表达式。在这种情况下,大多数元字符都失去了它们的特殊含义,除非你将它们转义。也一样

grep -nr "STRINGONE_\w\+_\w\+_STRINGTWO"

或者

grep -nrE "STRINGONE_\w+_\w+_STRINGTWO"

或者,因为您只需要大写字母:

grep -nr "STRINGONE_[A-Z]\+_[A-Z]\+_STRINGTWO"
grep -nrE "STRINGONE_[A-Z]+_[A-Z]+_STRINGTWO"

否则,中间包含三个或更多组件的字符串也将被接受。

于 2013-08-12T19:36:16.023 回答