我想在shell脚本中为QR8.4_Z4J25
编写正则表达式?我该怎么办?
这是对的吗?
[QR][0-9][.][0-9][_][A-Z][0-9][A-Z][0-9][0-9]
答案 0 :(得分:1)
这显然是错误的,因为它只匹配Q8.4_Z4J25
或R8.4_Z4J25
,而不是QR8.4_Z4J25
括号与指定的任何一个字符匹配,因此您想写:
[Q][R][0-9][.][0-9][_][A-Z][0-9][A-Z][0-9][0-9]
但是,您不需要为单个字符使用括号,因此可以将其简化为
QR[0-9]\.[0-9]_[A-Z][0-9][A-Z][0-9][0-9]
如果它位于支架之外,请务必将其脱离,否则它将匹配任何单个字符。
如果您想要匹配QR9.1_8A9YK
,则应将其更改为
QR[0-9]\.[0-9]_[A-Z0-9]\{5\}
如果你正在使用Extented Regular Expression,通常是为你正在使用的工具提供选项-E
,那么你就不应该逃避括号:
QR[0-9]\.[0-9]_[A-Z0-9]{5}
答案 1 :(得分:-1)
正则表达式中的方括号表示一组字符。
[MX_5]
将匹配一个M
,X
_
或5
字符。[0-9]
将匹配0
和9
之间的一个字符。[a-z]
将匹配小写a
和z
之间的一个字符。注意模式?方括号匹配单个字符。为了匹配多个字符,需要使用+
或*
或{}
来表示它应匹配的字符数。
但是,在您的情况下,您只想按顺序匹配实际的字母QR
,所以不要使用方括号。
QR[0-9]\.[0-9]_[A-Z][0-9][A-Z][0-9][0-9]
对于像下划线这样总是在同一个地方的字符也一样。请注意,.
已使用\
进行转义,因为它在正则表达式中具有特殊含义。
返回使用方括号匹配多个字符,如果最后5个字符的顺序无关紧要,您可以使用单个方括号和{}
进一步缩小表达式以匹配所有字符在下划线后面跟踪字符。
QR[0-9]\.[0-9]_[A-Z0-9]{5}