假設,我有一個字符集是這樣的:包含在一組至少不同的字符的計數
['a','b','c','x','y','z']
我想建立相匹配一定數量這些字符的(例如正則表達式3)。
下面是它的一些例子:
ab
- 敵不過xy
- 敵不過abt
- 敵不過aaa
- 敵不過abc
- 比賽yaz
- 匹配yazx
- 比賽ytaz
- 匹配
可以這樣用正則表達式來實現?
假設,我有一個字符集是這樣的:包含在一組至少不同的字符的計數
['a','b','c','x','y','z']
我想建立相匹配一定數量這些字符的(例如正則表達式3)。
下面是它的一些例子:
ab
- 敵不過xy
- 敵不過abt
- 敵不過aaa
- 敵不過abc
- 比賽yaz
- 匹配yazx
- 比賽ytaz
- 匹配可以這樣用正則表達式來實現?
一個簡單的解決方案將是這樣的圖案:
(.*[abcxyz]){3}
這將匹配的零個或多個任意字符,隨後的a
一個,b
,c
,x
,y
,或z
,所有的在主題字符串中必須至少出現3次。
只匹配包含不同字母串,你可以使用負前瞻((?!…)
)和反向引用(\N
):
(.*([abcxyz])(?!.*\2)){3}
這將匹配零個或多個任意字符,然後只要該字符的另一個實例沒有出現在字符串的後面(即它將匹配該字符串中該字符的最後一個實例),則所有這些都必須美聯社在主題串中梨至少3次。
當然,你可以改變{3}
任何你喜歡,但請注意,如果你需要指定最大次數這些字符可以出現在你的字符串,只有最小,將無法正常工作。
'abt - mismatch'會匹配您的正則表達式。 – user17130 2014-09-19 18:42:16
@ user17130'abt'不匹配,但是完整的字符串'abt - mismatch'會因爲'mismatch'中的'a'和'c'。如果所有三個字符都需要出現在同一個單詞中,OP沒有指定。 – 2014-09-19 18:46:57
這也會匹配aaa。當我說「至少」時,我的意思是,至少有三種不同的性格。 aaa只包含一個。 – 2014-09-19 18:53:15
所以,你會整天匹配'aaaa'嗎? – sln 2014-09-19 18:47:31