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

时间:2016-03-28 03:22:33

标签: javascript regex web-scraping

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

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

以下是要解决的例子。

实施例

To see the live demo, click here

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

有人能找出解决方案吗?

Here is a similar question for Java

1 个答案:

答案 0 :(得分:1)

尝试使用以下正则表达式,它应匹配

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

请参阅regex101上的Demo