我需要在另一个p标签内找到p标签。我刚才给出了以下示例来更好地理解它。
前:
db.student.aggregate([{$project:{rollno:1,per:{$divide:[{$add:["marks1","$marks2","$marks3"]},3]}}}])
我需要一个正则表达式来查找其他p标签内的p标签。
在上面的例子中,最后一个p标签里面有另一个p标签。我如何通过正则表达式找到它。
答案 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
成为你的朋友。