我使用正则表达式在perl中解决了一个奇怪的事情。
考虑字符串 -
abcdef000000123
blaDeF002500456
wefdEF120045423
当我使用pcre库支持在C中尝试时,所有这些字符串都与下面的正则表达式匹配:
???[dD][eE][fF][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
但是我无法在perl代码中实现相同的功能。我收到了一些奇怪的错误。
请帮助处理这两个匹配的perl代码。
提前致谢...
答案 0 :(得分:3)
?
被称为量词,它使前面的模式或组成为可选匹配。在正则表达式中独立?
没有任何意义,您收到的错误如下:Quantifier follows nothing in regex
。
以下正则表达式适用于perl:
...[dD][eE][fF][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
或者更简洁的正则表达式:
.{3}[dD][eE][fF][0-9]{9}
每个点表示匹配任何字符。
PS:你可能会对shell的glob vs regex感到困惑。
答案 1 :(得分:2)
这看起来更像是文件系统正则表达而不是PCRE。在Perl中,?
是量词,而不是外卡。您可能希望将它们替换为.
,以便在Perl兼容的任何内容中获得相同的结果。
我可能会使用...[dD][eE][fF][0-9]{9}
甚至将[0-9]
替换为\d
。
答案 2 :(得分:0)
qr/[A-z]{3}def[0-9]{9}/i
应该是用于验证上述字符串的Perl Regex
对象。
此致