我试图找到一个正则表达式,匹配不超过n个连续的,比如三个,例如,一个字符的出现;在三个字符的情况下是“a”:
abbaa - matches;
ammaaa - 不匹配(连续三个a),有一个“a”,但整个表达式必须丢弃,因为三个“a”正则表达式,匹配不超过n次发生
谢谢。
我试图找到一个正则表达式,匹配不超过n个连续的,比如三个,例如,一个字符的出现;在三个字符的情况下是“a”:
abbaa - matches;
ammaaa - 不匹配(连续三个a),有一个“a”,但整个表达式必须丢弃,因为三个“a”正则表达式,匹配不超过n次发生
谢谢。
您可以指定一个字符,也可以将其推广到所有字符。
此外,不知道如果你想测试或匹配整个字符串,但假设
它是整个字符串。
广义
^(?:(\w)(?!\1{2})|\W)+$
解释
^ # Beginning of string
(?: # Cluster
(\w) # (1), a word character
(?! \1{2}) # Not 2 more of same in a sequence
| # or,
\W # Not a word character
)+ # End Cluster, 1 to many times
$ # End of string
您可以通过更换你想要的东西替换特定的字符,而不是\w
和\W
。
字符示例a
它将是a
和[^a]
。
^(?:(a)(?!\1{2})|[^a])+$
或多个像[abc]
和[^abc]
^(?:([abc])(?!\1{2})|[^abc])+$
使用{m,n}
语法(如果你的环境提供了它,它可能确实
{m,n}
允许前一个字符的m
到n
(含)出现
例子:。
/a{0,3}/
比赛0至3次出现a
。
/a{3,}/
匹配3个或更多出现ES。
/a{3}/
恰好匹配3次。
在下面的例子中,我成对上述语法与负先行和负回顾后。
(?<!a)a{0,3}(?!a)
匹配0至3次出现的a
,其中0-3次出现之前或之后没有a
。
但是第一个例子/ a {0,3} /也匹配,比如说:xxaaaad; https://开头regex101。com/r/f54igA/1 –
正确的是,如果你想要我规定确切的解决方案,你必须更具体地与你想要的匹配。你会使用我提到的语法来构建你想要的任何正则表达式。另见我的更新答案。 – jakeehoffmann
让我知道,如果最后一个例子是你在找什么。我很乐意进一步讨论并编辑我的问题。正则表达式很有趣。 – jakeehoffmann
你尝试过什么?您使用的是哪种正则表达式引擎? –
阅读一些教程,并在regex101上进行试验。 –