我正在练习我的正则表达式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之间必须存在任何元素。我想要的是一个范围之间的所有元素都应该存在。有表达吗?
答案 0 :(得分:1)
n[abc]
仅捕获n
和character 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
如果您希望所有abc
都存在,则可以使用lookahead
。
(?=.*a)(?=.*b)(?=.*c)n[abc]+
参见演示。