使用 C 中的 PCRE,给定正则表达式 /^a{1,3}$/ 和字符串“aa”,pcre_dfa_exec() 返回 1,表示字符串匹配。
我需要的是能够确定字符串不会耗尽正则表达式,并且字符串中还有可能匹配的更多字符(即“111”)。
我在 PCRE 中找不到这方面的 API。我错过了什么吗?
就此而言,您不能使用 pcre 或任何其他正则表达式匹配引擎来做到这一点。考虑 regexp a+
,没有任何字符串用尽了 regexp。对于大多数正则表达式,有无数个字符串可以匹配它。
但是,如果您将问题限制为仅匹配有限数量的字符的正则表达式,则可以解决您的问题。您将首先生成满足正则表达式的所有字符串,然后检查指定的字符串是否是其中最长的字符串。
你可以使用这个 perl 模块:Regexp:Genexp或者在这里使用 Python 解决方案。