我想要匹配的字符串不能包含超過3個連續重複的同一個字符。所以:什麼是正則表達式匹配一個字符串不能包含超過x個連續字符
- abaaaa [不匹配]
- abawdasd [搭配]
- abbbbasda [不匹配]
- bbabbabba [搭配]
是的,這將是更容易和更整潔做一個包含連續字符的正則表達式匹配,然後在代碼之後否定它。但是,在這種情況下,這是不可能的。
我想打開問題到x個連續字符,以便它可以擴展到一般情況下使問題和答案更有用。
在這種情況下支持負向前瞻。
我想要匹配的字符串不能包含超過3個連續重複的同一個字符。所以:什麼是正則表達式匹配一個字符串不能包含超過x個連續字符
是的,這將是更容易和更整潔做一個包含連續字符的正則表達式匹配,然後在代碼之後否定它。但是,在這種情況下,這是不可能的。
我想打開問題到x個連續字符,以便它可以擴展到一般情況下使問題和答案更有用。
在這種情況下支持負向前瞻。
要匹配不包含字符重複連續3次以上的字符串:
^((.)\2?(?!\2\2))+$
它是如何工作的:
^ Start of string
(
(.) Match any character (not a new line) and store it for back reference.
\2? Optionally match one more exact copies of that character.
(?! Make sure the upcoming character(s) is/are not the same character.
\2\2 Repeat '\2' for as many times as you need
)
)+ Do ad nauseam
$ End of string
所以,/2
在你的整個表達式的數量會你允許一個角色連續重複的次數,而且你不會得到一個匹配。
E.g.
^((.)\2?(?!\2\2\2))+$
將匹配所有連續不超過4次重複字符的字符串。
^((.)\2?(?!\2\2\2\2))+$
將匹配連續5次以上不重複一個字符的所有字符串。
請注意,此解決方案使用負向預測,但並非所有並非所有正則表達式都支持它。
我添加了這個問題,因爲我在網上找不到答案。我在其他SO問題的幫助下找出了答案。所以,我認爲這是一個很好的分享答案。 – Co7e