正则表达式,用于查找与html标记最接近的模式匹配

时间:2017-11-10 14:07:00

标签: regex regex-negation regex-greedy

我正在检查以下问题的解决方案。 我有一个文本序列如下,我想提取更接近<em>标签的方括号的内容。

[P1/1]0(4)0(5)**[P1/432]** g(5)I(2)d(7)a(8)`<em>`b(5)[P1/4]C(6)e(7)B(8)B`</em>`(9)[P1/5]0(6)i(7)[P1/6]0(1)I(2)[P1/7]0(6)[P1/1]0(1)0(2)[P1/2]E(1)c(2)d(3)a(4)**[P1/3]** 0(1)`<em>`b(2)[P1/4]C(1)e(2)B(3)B`</em>`(4)[P1/5]0(1)

所以在上面提到的文字中,我要搜索的是 [P1 / 432] [P1 / 3]

使用正则表达式((.(?!\[.*?]))+?)<em>,我无法仅获取括号内容,而是从[<em>获取所有内容。

有人能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

如果我们不关心嵌套的,不平衡的括号,有一个简单的解决方案:

\[[^\]\[]*\](?=[^\]\[]*<em>)

Live demo