我試圖找到一個正則表達式,匹配不超過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上進行試驗。 –