php小編小新在這篇文章中將為大家介紹具有巢狀重複的正規表示式。正規表示式是一種強大的字串匹配工具,可用於尋找、取代和驗證字串。嵌套重複是指在正規表示式中使用一個或多個重複的模式,而這些重複的模式又可以嵌套在其他模式中。這種技巧可以用來匹配具有層級結構的文本,例如HTML標籤、嵌套的括號等。透過了解巢狀重複的正規表示式的語法和用法,我們可以更靈活地處理各種複雜的字串比對需求。
我正在嘗試在 go 中創建一個正則表達式,最多匹配 50 個由空格分隔的單詞,其中每個單詞是 1-32 個“a” 我正在使用以下正則表達式
regexp.compile(`^(a{1,32}\s?){1,50}$`)
我收到以下錯誤
error parsing regexp: invalid repeat count: `{1,50}`
我注意到它最多可以重複 31 次,就像這樣
r, err := regexp.Compile(`^(a{1,32}\s?){1,31}$`)
請參考https://go.dev/play/p/rlnrox9-57_m
Go 的regexp
引擎有一個限制 其中頂層和任何內部重複的組合不得超過最內部重複部分的1000 個副本。 re2 語法規範中記錄了這一點。
在您的情況下,最多 31 個有效,因為內部 32 * 外部 31 = 992。32 * 32 = 1024 以及 32 * 50 = 1600 超出該限制將不起作用。
解法是將表達式分割為多個部分:^(a{1,32}\s?){1,31}(a{1,32}\s?){0, 19}$
p>
以上是具有嵌套重複的正規表示式的詳細內容。更多資訊請關注PHP中文網其他相關文章!