我有一个模式
"^\+?\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/