我有一个模式


"^\+?\d{3,20}$"




测试“ 123455”,“ +123445”(预期匹配)。
在“ 123+213”,“ abc”上测试,期望没有匹配项。


此模式适用于pcre_exec(),但不适用于regexec()

最佳答案

regexec()函数实现POSIX Basic Regular Expressions (BRE) and Extended Regular Expressions (ERE)

pcre_exec()函数实现Perl-Compatible Regular Expressions,这是ERE的主要超集(有关Perl的RE的Perl规范,请参见perlre)。

\d表示法不是POSIX ERE专用的(更不用说BRE)了;这并不意味着“数字”。它确实在PCRE中表示“数字”。如果希望正则表达式在两种方言中都起作用,则需要使用[0-9]代替\d,并确保告知regcomp()编译ERE。

"^+?[0-9]{3,20}$"

关于c++ - regexec和pcre_exec有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53511759/

10-08 22:45