perl中的正则表达式和重复字符类

时间:2011-06-30 21:35:40

标签: regex perl

我正在尝试编写一个正则表达式,可以提取(可能是多个)四个十六进制数字/字母的字符串。

我可以这样做:  /^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]/

但有更好的方法吗?

似乎是重复运算符:

  

a {n}匹配'a'正好重复n次。

     

a {n,}匹配'a'重复n次或更多次。

     

a {n,m}匹配'a'在n和m次之间重复。

可行,但以下正则表达似乎不起作用:

/^[A-Fa-f0-9]{4}+/

我正在尝试匹配字符串:

AA00

AA00FFAA

0011FFAA0022

等等。每个字符串都在它自己的行上。

谢谢!

2 个答案:

答案 0 :(得分:8)

试试这个:

/^(?:[A-Fa-f0-9]{4})+$/

答案 1 :(得分:1)

你在正则表达式中嵌套了量词;即,{4}表示匹配正好4次 + 表示多次匹配该字符串,因此这两个量词冲突。如果你只是删除 + ,它就会起作用:

/^[A-Fa-f0-9]{4}/