2013-02-15 124 views
0

我想標誌匹配下不同的排列順序串滿足這些標準正則表達式匹配組排列

1)兩個英文字母「S」,「T」應該出現一次且僅一次

2 )字母'n','o','p'其中任何一個都可以出現零次或一次

有沒有可以滿足這個目的的正則表達式?

+1

你的意思是字母來代替字母? – LeonardChallis 2013-02-15 11:37:31

+1

我不願意提交元提案以禁止只添加正則表達式標籤的問題。 – 2013-02-15 11:38:29

+0

預覽可能會對您有所幫助:http://www.regular-expressions.info/lookaround.html。 – 2013-02-15 11:39:37

回答

0

你可以使用這個表達式

^(?=[^s]*s[^s]*$)(?=[^t]*t[^t]*$)(?=[^n]*n?[^n]*$)(?=[^o]*o?[^o]*$)(?=[^p]*p?[^p]*$).*$ 
    ----------------    -----------------     
     |         |->matches further only if there is 0 or 1 occurance of n 
     | 
     |->matches further only if there is a single occurance of s 

使用singlelinedotall選項與正則表達式

+0

我不認爲你最後需要'。* $'。 – 2013-02-15 11:43:29

+0

@FelixKling是的確的..你是正確的..如果他只想檢查匹配,那麼沒有必要.. – Anirudha 2013-02-15 11:47:35

+0

我不覺得這與grep一起使用。 echo「nsot」| grep'^(?= [^ s] * s [^ s] * $)(?= [^ t] * t [^ t] * $)(?= [^ n] * [^ n] * $)(?= [^ o] * o?[^ o] * $)(?= [^ p] * p?[^ p] * $)。* $' this不匹配。我在這裏錯過了什麼? – Shankar 2013-02-15 11:49:57