正则表达式,用于计算任意长度的字符串中的%或=或:的数量

时间:2011-12-26 23:19:03

标签: regex pcre

我正在寻找帮助来制作一个正则表达式,该表达式检测任意长度的字符串中的10个(或更多)字符'%'或'='或':'的计数。

到目前为止,我已经检查了以下来源,但似乎无法调整发布到我需要的内容:

另外,我自己尝试了以下表达式,但它们与我的字符串不匹配。 (我一直用“pcretest”来检查比赛)

  • /[%=:]{10,}/
  • /[a-zA-Z0-9](:|%|=){10,}/

任何人都可以提供协助吗?

4 个答案:

答案 0 :(得分:2)

如果字符串中包含10个(或更多)字符:%=:,其中包含任意数量的其他字符,则此正则表达式将匹配:

/(?:[^%=:]*[%=:]){10}/

如果您需要匹配包含至少10的整个字符串,请使用以下字符串:

/^(?:[^%=:]*[%=:]){10}[\S\s]*$/

您没有说他们是否需要连续。这个答案假设没有。

答案 1 :(得分:1)

...

怎么样:

/[%=:]{1000,}/

答案 2 :(得分:1)

cnt = 0
for each character in string:
    if character is '%' or ':' or '=':
        cnt++

    if cnt >= 10: # or 100 or 1000
        SUCCESS
        break

答案 3 :(得分:0)

这将取决于您正在使用的正则表达式引擎,但这应该有效:

/([%:=][^%:=]*){10,}/

根据您的编程语言,您可能需要使用前导反斜杠转义括号和括号(例如:/\([%:=][^%:=]*\)\{10,\}/)。

这将匹配您选择的一个字符{'%',':','='},可选地,跟随该组中不包含的任意数量的字符,十次或更多。