我正在处理网站迁移。不幸的是,旧网站上的无序列表元素是在不使用ul
标签的情况下进行格式化的。因此,我想将以下错误标记解析为常见的HTML ul
标记:
<p class="bodytext">
• This is some random text.<br>
• This is some other random text.<br>
• This is another random text.
</p>
重要事实:
我考虑过一个正则表达式,但我不知道要解决上述问题,尤其是如何在不使用
任何帮助都会得到赞赏。
答案 0 :(得分:2)
如评论中所述,用正则表达式is a bad idea解析HTML。
如果您理解了这一点,但仍然想继续使用regexp,则可以执行以下操作:
1。插入<ul></ul>
标签:
regexp:
(<p class="bodytext">)(.+?)(<\/p>)
替换为:
<ul>\2</ul>
给予
<ul>
• This is some random text.<br>
• This is some other random text.<br>
• This is another random text.
</ul>
2。插入<li></li>
标签
正则表达式:
(• )(.+?)(<br>|)(\n)
替换为:
<li>\2</li>\n
礼物:
<ul>
<li>This is some random text.</li>
<li>This is some other random text.</li>
<li>This is another random text.</li>
</ul>
答案 1 :(得分:1)
您可以分两个步骤进行操作:
<([^ ?]+).*>((?=[^<]*• )[\w\W]+)<\/(\1)>
。 <([^ ?]+).*>
和<\/(\1)>
确保您将拥有匹配的标签(打开和关闭),这要归功于对第一个捕获组\1
的反向引用。
由于积极的前瞻性,它将仅匹配包含列表的元素:
(?=[^<]*• )
。
在第二个捕获组中,您将拥有所有列表元素,因此可以将其替换为:<ul>\2</ul>
。现在您将拥有类似的内容:
<ul>
• This is some random text.<br>
• This is some other random text.<br>
• This is another random text.
</ul>
•
替换为<li>