2013-10-31 78 views
1

中的多个问号匹配我在perl中使用正则表达式解决了一个奇怪的问题。Perl扩展正则表达式 - 与

考虑琴弦 -

abcdef00000

blaDeF002500456 

wefdEF120045423 

所有这些字符串与下面的正则表达式时,我用C试图与PCRE库支持配套:

???[dD][eE][fF][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] 

但我无法实现在Perl代码中相同。我收到了一些奇怪的错误。

请帮助一下这两件事情匹配的Perl代码。

预先感谢...

+0

你会得到什么错误?你能告诉我们一些代码吗? –

+0

嗨devnull, 感谢您的答复。 替换?与。对我来说工作正常(根据所提到的正则表达式的期望)。 –

回答

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和regex弄糊涂了。

+0

嗨anubhava, 感谢您的帮助。 替换?与。按预期工作。但很想知道pcre图书馆如何对待他们。会检查它。 –

+0

不客气,如果您对答案满意,请不要忘记标记已接受的商标。正如我写的PCRE不会单独接受'?'。 – anubhava

2

这看起来更像是一个文件系统正则表达式,而不是PCRE。在Perl中,?是一个量词,而不是通配符。您可能需要用.替换它们以获得与任何Perl兼容的相同结果。

我可能会用...[dD][eE][fF][0-9]{9}甚至用\d代替[0-9]

0

qr/[A-z]{3}def[0-9]{9}/i

应该是用于验证所提到的字符串Perl Regex对象。

Regards