1

我在 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 代码。

提前致谢...

4

3 回答 3

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 感到困惑。

于 2013-10-31T11:13:30.550 回答
2

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

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

于 2013-10-31T11:16:52.150 回答
0

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

应该是Perl Regex用于验证上述字符串的对象。

问候

于 2013-10-31T11:27:27.430 回答