gpt4 book ai didi

c++ - regexec 和 pcre_exec 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 19:59:47 25 4
gpt4 key购买 nike

我有一个模式

"^\+?\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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com