使用Grep匹配带有已知前缀和后缀的字符串和正则表达式

时间:2015-07-20 22:11:20

标签: regex grep

我试图将所有字符串与已知前缀和主要已知的后缀匹配。

前缀将是任意3个大写字符。

后缀将为一个大写C,之后为零或一个数字。 恩。 CCx其中x是任意数字

中间子串的长度未知,仅为大写字母。

示例:

GORABJKAC3 [match]
GORCCCCC [match]
GORBBBBCCC [match
GORBBBBCA [no match]
BORBBBBCA2 [no match]

我尝试了类似grep ^GOR[:upper:]*C[:digit:]*的内容,但这并不起作用。

我认为[:upper:]可能会使用全部大写字母,包括我要匹配的后缀C

如何使用grep将我想要的字符串与正则表达式匹配?

2 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

\b[A-Z]{3}.*?C[0-9]?\b

RegEx Demo

或者使用锚点(如果这些字符串在不同的行上):

^[A-Z]{3}.*?C[0-9]?$

答案 1 :(得分:0)

使用[A-Z]代替[:upper:][0-9]代替[:digit:]

此外,*表示0或更多,+表示1或更多,?表示0或1.我认为您希望使用+和{ {1}}。

?+是特殊的Perl正则表达式字符,因此请将?标志添加到grep命令中。

最终的正则表达式:-P