使用正则表达式查找多个实例

时间:2016-04-11 14:03:49

标签: regex

我目前在使用JS Regex时有点蠢。从以下代码中,我们需要提取divspan

中的内容
<span class="code">
    !(true ^ false)
</span>

<span class="code">
    (true ^ false)
</span>

因此,我们需要匹配!(true ^ false)(true ^ false)

我想出了以下正则表达式:/<(div|span) class="code">([\s\S]+)<\/(div|span)>/im。当匹配文本中只有一个divspan时,此方法有效。但是,在上面列出的情况中,匹配是:

    ! (true ^ false)
</span>

<span class="code">
    !(true ^ false)

所以基本上只需要开头和结尾tag。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

应该将<div></div><span></span>匹配,并使用?

制作正则表达式

正则表达式: <(div|span) class="code">([\s\S]+?)<\/\1>

<强>解释

  • <div></div>匹配应使用\1对第一个捕获的群组进行反向引用。

  • 使用?制作正则表达式以匹配最小标签。

<强> Regex101 Demo

答案 1 :(得分:1)

您真正需要的是在?后加+使比赛变得非贪婪,然后添加g修饰符以在第一场比赛后继续搜索:

<(div|span) class="code">\s*([\s\S]+?)<\/(div|span)>

Demo