指定必须存在所有元素的范围样式

时间:2015-03-19 04:11:54

标签: regex

我正在练习我的正则表达式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 个答案:

答案 0 :(得分: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