i have this string
string = "<p>para1</p><p>para2</p><p>para3</p>"
我希望在para2文本处进行分割,以便我得到这个结果。
["<p>para1</p>", "<p>para3</p>"]
问题在于,有时para2可能没有被包含在p标签中(并且p标签外部和内部可能存在可选空格)。我认为以下代码可以解决这个问题:
string.split(/\s*(<p>)?\s*para2\s*(<\/p>)?\s*/)
但是,我得到了这个:
["<p>para1</p>", "<p>", "</p>", "<p>para3</p>"]
它没有将起始和结束的p标签拉入匹配模式中 - 它们应该作为分割的一部分被消除。 Ruby的正则表达式默认是贪婪的,所以我认为它们会被拉进来。如果我使用gsub而不是split,则似乎得到了确认:
string.gsub(/\s*(<p>)?\s*para2\s*(<\/p>)?\s*/, "XXX")
=> "<p>para1</p>XXX<p>para3</p>"
这些东西在这里被拉进来并且被清除掉了,但是在分裂上没有。有任何想法吗?
谢谢,马克斯