2015-03-19 56 views
1

我練我的正則表達式here指定範圍風格,所有的元素都必須

存在,我有以下字符串

nabcdf 

,我想選擇它的全部。所以我寫了下面的正則表達式

(n[abc]) -> n followed by a , b or c 

因爲這樣只有n和a被高亮。基於此,我有兩個問題

1)爲什麼沒有b和c也突出顯示?既然他們在場?

2)[abc]指定存在a或b或c。是否可以指定一個範圍,如a-> c,其中一個範圍內的所有元素應該存在(即),因此它最終會像abc一樣?我知道正則表達式有[a-c],但這意味着a到c之間的任何元素都必須存在。我想要的是一個範圍內的所有元素都應該存在。有沒有一個表達?

回答

1
n[abc] 

將捕獲僅ncharacter class之一。爲了捕捉更多你需要像*+量詞。

因此,這將是

n[a-c]+ #will capture `n` and at least one of the character class 

n[a-c]* #will capture `n` and `0` or more of character class 

See demo.

or

如果你希望所有的abc應該存在,你可以使用lookahead

(?=.*a)(?=.*b)(?=.*c)n[abc]+ 

查看演示。

https://regex101.com/r/pT4tM5/13

相關問題