【问题标题】:Restrict total number of certain characters in PCRE to N将 PCRE 中某些字符的总数限制为 N
【发布时间】:2023-03-14 06:14:01
【问题描述】:

有没有办法编写这样的正则表达式来匹配某个字符出现 N 次或 M 到 N 次之间的字符串?字符可以分布在整个字符串中。这使得使用正则表达式变得困难。

我需要使用 PCRE C/C++ 库。乍一看,这似乎不是正则表达式的正确工作,但与字符串方法无关,但由于各种原因,我希望找到一个正则表达式解决方案。

我的第一个猜测是我需要使用 PCRE 的标注功能来调用一个函数,该函数将计算捕获序列中字符 C 的出现次数并接受或拒绝这样的匹配。尚不确定是否可以通过这种方式使用标注功能。

【问题讨论】:

    标签: c++ c regex pcre


    【解决方案1】:

    我认为以下示例匹配包含 3 到 5 个 x-es ^[^x]*(x[^x]*){3,5}[^x]*$ 的输入。

    添加:

    讨论后更好的是:^[^x]*(x[^x]*){3,5}$

    【讨论】:

    • 看起来不错,但在$ 之前的最后一个[^x]* 不是多余的,因为已经包含在(x[^x]*){3,5} 中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多