有什麼辦法來創建一個正則表達式匹配*-*-*-*-*
(帶4」的字符串,所以它會匹配1-2-3-4-5
,AB-CD-EF-GH-IJ
但不9-8-7
?正則表達式匹配4減去非相鄰
最近正則表達式是([\w\-\.]+[\-\.][\w\-\.]+[\w\-\.]+)
但它匹配9-8-7,太。
有什麼辦法來創建一個正則表達式匹配*-*-*-*-*
(帶4」的字符串,所以它會匹配1-2-3-4-5
,AB-CD-EF-GH-IJ
但不9-8-7
?正則表達式匹配4減去非相鄰
最近正則表達式是([\w\-\.]+[\-\.][\w\-\.]+[\w\-\.]+)
但它匹配9-8-7,太。
(.*([^-]|^)-){4}
.*
- 零個或多個字符([^-]|^)
- 一個字符,這是不是一個破折號或字符串本身-
的開始 - 一個破折號字面上{4}
- 整件事重複4次你可以使用這個表達式:
^[^-.]+([-.])(?:[^-.]+\1){3}[^-.]+$
破碎:
^ # start
[^-.]+ # match 1 or more of non-dot & non-hyphen char
([-.]) # match 1 dot OR hyphen char and capture it as group #1
(?: # non-capturing group start
[^-.]+ # match 1 or more of non-dot & non-hyphen char
\1 # match same char as captured in group #1
){3} # non-capturing group end, repeat 3 occurrences of this group
[^-.]+ # match 1 or more of non-dot & non-hyphen char
$ # end
沒有其他限制,-([^-]+-){3}
您的要求相匹配。
你自己的嘗試只覆蓋三次重複,並且允許一段時間或空白而不是任何破折號。
從廣義上講,如果你設置X表示「任何字符,除了不相鄰的連字符」,那麼你的圖案成爲
X*-X+-X+-X+-X*
所以面臨的挑戰是剛剛確定X作爲所有非連字符或字符串相鄰的連字符。
([^-]|(--+))
撰寫兩...
([^-]|(--+))*-([^-]|(--+))+-([^-]|(--+))+-([^-]|(--+))+-([^-]|(--+))*
這裏試試吧...... 其中包含至少4個不相鄰的`-`簽署https://regex101.com/r/lG3hM5/1
匹配字? – tchelidze
['(\ w +(?: - \ w +){4})'](https://regex101.com/r/iU2oU7/1) – Tushar