【发布时间】:2015-07-20 22:11:19
【问题描述】:
我正在尝试使用已知前缀和最常见的后缀匹配所有字符串。
前缀可以是任意 3 个大写字符。
后缀将是一个大写的C,后面是零或一个数字。
前任。 C 或 Cx 其中x 是任意数字
中间的子串长度未知,只有大写字母。
示例:
GORABJKAC3 [match]
GORCCCCC [match]
GORBBBBCCC [match
GORBBBBCA [no match]
BORBBBBCA2 [no match]
我尝试了grep ^GOR[:upper:]*C[:digit:]* 之类的方法,但不起作用。
我认为[:upper:] 可能只使用所有大写字母,包括我想匹配的后缀C。
如何使用 grep 将我想要的字符串与正则表达式匹配?
【问题讨论】:
-
正确使用POSIX字符类的方法是
[[:upper:]] -
nhatdh 是对的,
regex(7)手册页说:“在括号表达式中,用“[:”和“:]”括起来的字符类的名称...”——你想要^GOR[[:upper:]]*C[[:digit:]]*\>,其中\>是一个“词尾”标记以避免匹配“GORBBBCA”——或者跳过\>并使用grep -o -
如果在字尾标记之后的字符串中可能还有其他字符,该标记会阻止它尝试匹配更多字符吗?
-
我会在示例中添加更多内容以澄清,但显然格式化为代码的代码未格式化为代码,并且不允许发布。