Regexp只在p标签内找到内部p标签

时间:2015-06-04 09:30:50

标签: regex

我需要在另一个p标签内找到p标签。我刚才给出了以下示例来更好地理解它。

前:

db.student.aggregate([{$project:{rollno:1,per:{$divide:[{$add:["marks1","$marks2","$marks3"]},3]}}}])

我需要一个正则表达式来查找其他p标签内的p标签。

在上面的例子中,最后一个p标签里面有另一个p标签。我如何通过正则表达式找到它。

2 个答案:

答案 0 :(得分:0)

如果您的正则表达式支持lookarounds,请尝试以下操作:

(?s)<p>(?:(?!</?p>).)*</p>(?=(?:(?!</?p>).|<p>(?:(?!</?p>).)*</p>)*?</p>)

此部分(?:(?!</?p>).)*确保内部无法打开或关闭<p。结束时的正向前瞻(?= ...检查是否在</p内。请参阅demo for trying at regex101

通常,正则表达式不是解析html的方法。你尝试了什么正则表达式而不起作用?

答案 1 :(得分:0)

我认为解析xml会容易得多。 Java内置了xml支持,或者你的中间件很可能也有。

如果你坚持使用别的东西,你可以循环你的字符串。当您找到<p>时,您会增加索引。当您找到</p>时,您会减少索引。因此,当您的索引为1并且您点击另一个<p>时,您就知道这是一个内部<p>,您可以将字符放到下一个</p>的某个变量中(例如{ {1}})。

StringBuilder成为你的朋友。