RegEx - 捕获多次

时间:2015-05-07 21:17:36

标签: html regex sublimetext sublimetext3

我目前正在尝试转换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),但我愿意用任何东西来完成这项任务。

2 个答案:

答案 0 :(得分:2)

\s*?<tr>\s*?<td>(.*?)<\/td>\s*?<td>.*?(<img[^>]*>).*?<\/td>.*?<\/tr> w / sig选项应该这样做。

Sample

答案 1 :(得分:0)

尝试使用here工具(仅限Windows AFAIK)。它支持多个文件的正则表达式搜索和替换。匹配多个出现应该没问题。

你是否试过没有“桌子”的比赛?像这样TextCrawler