我正在阅读Javascript RegExp documentation,并注意到不需要正则表达式功能x(?=y)
,因为您只需编写x(?:y)
即可完成相同的操作。
只有在跟y后才匹配x,并且不会在结果中捕获y。
我错了吗?两者有区别吗?
答案 0 :(得分:2)
(?=)
是“X,通过零宽度正向前瞻”。 (?:)
是非捕获组。
根据您正在使用正则表达式的方法(匹配与查找等),与正向前瞻匹配的结果可能不会包含在您的匹配结果中,其中非捕获组仍然是包含在匹配结果的[0]
组中。
答案 1 :(得分:0)
是的,你错了。 (?:y)
将消耗该字符,而(?=y)
仅检查是否存在y但不消耗它,因此可以添加其他检查。