带有可选子字符串的JavaScript RegEx模式

JavaScript RegEx pattern with optional substring

本文关键字:JavaScript RegEx 模式 字符串      更新时间:2023-09-26

我想用JavaScript编写一个正则表达式,它无条件地WRT重复模式中可选子字符串的存在(或不存在)。(换句话说,无论子字符串是否存在,我都希望它能工作。)

在下面的示例中,考虑以字符串beg开始并以字符串end结束的重复模式。我要提取的数据是字符串foobarbazbatqux。正如您所看到的,复杂性在于可选子字符串bat的存在及其周围的内容

下面是要解决的示例。

示例

要查看现场演示,请单击此处。

https://regex101.com/r/jZ7sU3/1

考虑以下正则表达式:

/beg(.*?)end/g

作用于以下内容:

beg foo end beg bar end beg baz (bat) end beg qux end

产生以下结果:

匹配1:foo

匹配2:bar

比赛3:baz (bat)

匹配4:qux

但我寻求的结果如下:

匹配1:foo

匹配2:bar

比赛3:baz

匹配4:bat

比赛5:qux

有人能想出解决办法吗?

这里有一个类似的Java问题。

尝试以下regex,它应该与匹配

/(?:beg (.*?)(?='(|end))|'((.*?)')/g

请参阅regex101上的演示。