【发布时间】:2015-07-18 15:52:31
【问题描述】:
我目前正在尝试转换如下 HTML 表格:
<table>
<tr>
<td>
Some Text
</td>
<td>
<img src="..." ...>
</td>
</tr>
...
</table>
进入这样的 HTML 列表:
<ul>
<li>
<div>
<p> Some Text </p>
</div>
<img src="..." ...>
</li>
...
</ul>
由于我需要在多个文件(100+)中执行此操作,我想使用正则表达式来完成它。然而,虽然我能够捕捉到我感兴趣的部分,但它似乎只捕捉到了最后一次出现的捕捉组。
有没有办法取回所有捕获的部分?
这是我目前的进度:
<table>(?>\s*?<tr>\s*?<td>(.*?)<\/td>\s*?<td>.*?(<img[^>]*>).*?<\/td>.*?<\/tr>)+\s*?<\/table>
(如果你有兴趣,这里是一个摆弄的链接: https://regex101.com/r/hQ8pF1/2 )
我选择的编辑器是 Sublime Text(使用 PCRE 引擎 AFAIK),但我愿意使用任何东西来完成这项任务。
【问题讨论】:
-
尝试使用正则表达式可能会证明非常具有挑战性,但如果您对输入有严格的规则,这是可能的。如果您在这些标签上有属性(其中一些包含
>字符,或更复杂的场景),则更是如此。如果您可以访问 HTML 解析器,我肯定会推荐使用它,尽管性能存在差异。 -
@JánosWeisz 谢天谢地,我需要编辑的表格似乎非常相同(关于它们的结构)。不过感谢您提到 HTML 解析器,我可能会看一下。
标签: html regex sublimetext sublimetext3