grep的正则表达式 - 匹配未知数量的字母字符?

时间:2013-08-12 19:10:13

标签: regex grep cygwin

我正在寻找类似的东西:

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

我知道STRINGONE和STRINGTWO。然而, * 反映了未知数量的字母(大写)。

我一直在假设

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

可行,但我找不到比赛。

如何正确制定这个正则表达式(在cygwin中使用grep)?

1 个答案:

答案 0 :(得分:4)

Have a look at the manual.如果没有-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"

否则,也会接受中间有三个或更多组件的字符串。