2015-03-19 32 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

相关问题