我正在寻找类似的东西:
STRINGONE_****_******_STRINGTWO
我知道 STRINGONE 和 STRINGTWO 的地方。但是,*反映了未知数量的字母(大写)。
我一直在假设
grep -nr "STRINGONE_\w+_\w+_STRINGTWO" .
会工作,但我没有找到匹配项。
我怎样才能正确地制定这个正则表达式(在 cygwin 中使用 grep)?
看看手册。没有-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"
否则,中间包含三个或更多组件的字符串也将被接受。