输入文本为:
test
abc abc
我想用获取abc之前的所有文本
.+(?=abc)
https://regex101.com/r/4XiJ2r/1
为什么2个abc
与第一个匹配?
您需要处理新行,不需要全局搜索,因为捕获必须在第一次出现abc
之前停止,所以删除m
和g
标志,并添加单行标志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
之前的一切。