javascript正则表达式前瞻为什么abc匹配



输入文本为:

test 
abc abc

我想用获取abc之前的所有文本

.+(?=abc)

https://regex101.com/r/4XiJ2r/1

为什么2个abc与第一个匹配?

您需要处理新行,不需要全局搜索,因为捕获必须在第一次出现abc之前停止,所以删除mg标志,并添加单行标志s:

const str = `test
abc abc`;
const result = str.match(/.*?(?=abc)/s);
console.log(result);

添加?(使其成为.+?(?=abc)(到你的量词会使它变懒,所以它会停在第一个ocurrence,但它仍然会找到其他ocurrence并将它们放在不同的"中;组":https://regex101.com/r/BjrowX/1

+量词要求匹配至少为1个字符。在abc abc中,在第一个abc之前没有任何内容,因此它不可能是匹配的。所以匹配就是第二个abc之前的一切。

相关内容

最新更新