regexec 和 pcre_exec 有什么区别?
What's the difference between regexec and pcre_exec?
我有一个模式
"^\+?\d{3,20}$"
- 测试“
123455
”、“+123445
”,预期匹配。
- 测试“
123+213
”、“abc
”,预计不会匹配。
此模式适用于 pcre_exec()
但不适用于 regexec()
。
regexec()
function implements POSIX Basic Regular Expressions (BRE) and Extended Regular Expressions (ERE).
Perl 对 Perl RE 的规范 pcre_exec()
function implements Perl-Compatible Regular Expressions, which are a major superset of the ERE (see perlre。
\d
表示法对于 POSIX ERE 并不特殊(更不用说 BRE);这并不意味着 'a digit'。它在 PCRE 中的意思是 'a digit'。如果您希望正则表达式在两种方言中都有效,您需要使用 [0-9]
代替 \d
,并确保 regcomp()
被告知编译 ERE。
"^+?[0-9]{3,20}$"
我有一个模式
"^\+?\d{3,20}$"
- 测试“
123455
”、“+123445
”,预期匹配。 - 测试“
123+213
”、“abc
”,预计不会匹配。
此模式适用于 pcre_exec()
但不适用于 regexec()
。
regexec()
function implements POSIX Basic Regular Expressions (BRE) and Extended Regular Expressions (ERE).
Perl 对 Perl RE 的规范 pcre_exec()
function implements Perl-Compatible Regular Expressions, which are a major superset of the ERE (see perlre。
\d
表示法对于 POSIX ERE 并不特殊(更不用说 BRE);这并不意味着 'a digit'。它在 PCRE 中的意思是 'a digit'。如果您希望正则表达式在两种方言中都有效,您需要使用 [0-9]
代替 \d
,并确保 regcomp()
被告知编译 ERE。
"^+?[0-9]{3,20}$"