我想匹配 start 和 end 之间的所有内容,给出以下字符串:
const test = `this is the start
a
b
c
e
f
end
g
h
`;
我有以下正则表达式
const output = test.match(/start((.|\n)*)end/m);
不,
output[0]
包含匹配的整个字符串(带有开始和结束)
output[1]
是比赛(开始和结束之间的所有内容)
output[2]
只是一个回报(
)
正则表达式的这一部分:
((.|\n)*)
创建两个捕获组。外部组收集与内部 *
组匹配的所有匹配的“任何”字符。内部组将包含最后一个匹配的单个字符。
请注意,您可能最好使用稍微不同的正则表达式,以避免在回溯接管之前在组中收集太多字符的奇怪效果。
正如 Pointy 提到的,你有两个捕获组。
如果您使用命名捕获组,这将使代码更易于编写和理解:
const test = `this is the start
a
b
c
e
f
end
g
h
`;
console.log(test.match(/start(?<between>(.|\n)*)end/m).groups.between)