我正在寻找类似的东西:
STRINGONE_****_******_STRINGTWO
我知道STRINGONE和STRINGTWO。然而, * 反映了未知数量的字母(大写)。
我一直在假设
grep -nr "STRINGONE_\w+_\w+_STRINGTWO" .
可行,但我找不到比赛。
如何正确制定这个正则表达式(在cygwin中使用grep)?
答案 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"
否则,也会接受中间有三个或更多组件的字符串。