我正在通读 Javascript RegExp documentation并注意到正则表达式功能 x(?=y)
不是必需的,因为您可以只编写 x(?:y)
并且它会做完全相同的事情。
仅当 x 后跟 y 时才会匹配 x,并且不会在结果中捕获 y。
我错了吗?两者有区别吗?
最佳答案
(?=)
是一个“X,通过零宽度正先行”。 (?:)
是一个非捕获组。
根据您使用正则表达式的方法(匹配与查找等),与正先行匹配的结果可能不会包含在您的匹配结果中,非捕获组仍会包含在匹配结果中包含在匹配结果的 [0]
组中。
关于javascript - 正则表达式中 (?=foo) 的意义是什么 if (? :foo) already exists?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399404/