2014-09-19 68 views
1

假設,我有一個字符集是這樣的:包含在一組至少不同的字符的計數

['a','b','c','x','y','z'] 

我想建立相匹配一定數量這些字符的(例如正則表達式3)。

下面是它的一些例子:

  • ab - 敵不過
  • xy - 敵不過
  • abt - 敵不過
  • aaa - 敵不過
  • abc - 比賽
  • yaz - 匹配
  • yazx - 比賽
  • ytaz - 匹配

可以這樣用正則表達式來實現?

+0

所以,你會整天匹配'aaaa'嗎? – sln 2014-09-19 18:47:31

回答

3

一個簡單的解決方案將是這樣的圖案:

(.*[abcxyz]){3} 

這將匹配的零個或多個任意字符,隨後的a一個,bcxy,或z,所有的在主題字符串中必須至少出現3次。

只匹配包含不同字母串,你可以使用負前瞻((?!…))和反向引用(\N):

(.*([abcxyz])(?!.*\2)){3} 

這將匹配零個或多個任意字符,然後只要該字符的另一個實例沒有出現在字符串的後面(即它將匹配該字符串中該字符的最後一個實例),則所有這些都必須美聯社在主題串中梨至少3次。

當然,你可以改變{3}任何你喜歡,但請注意,如果你需要指定最大次數這些字符可以出現在你的字符串,只有最小,將無法正常工作。

+0

'abt - mismatch'會匹配您的正則表達式。 – user17130 2014-09-19 18:42:16

+0

@ user17130'abt'不匹配,但是完整的字符串'abt - mismatch'會因爲'mismatch'中的'a'和'c'。如果所有三個字符都需要出現在同一個單詞中,OP沒有指定。 – 2014-09-19 18:46:57

+0

這也會匹配aaa。當我說「至少」時,我的意思是,至少有三種不同的性格。 aaa只包含一個。 – 2014-09-19 18:53:15

相關問題