我想使用 正则表达式 (与 pcre 兼容)来选择表格
XML或HTML文件中的单元格。
该单元格在几行中包含
其他元素和相关属性和值。这个单元应该在最后一列。
由于某些原因,我不能也不想使用“. matches newline
”选项。
例如在此代码中:
编辑:
<table colcount="4">
<tr>
<td colspan="2">
<para><text> Mike</text></para>
</td>
<td>
<tab />
</td>
<td1>
<para><text>Jack</text></para>
<para><text>Sarah</text></para>
</td>
</tr1>
<tr>
<td>
<para><text>Bob</text></para>
<para><text>Rita</text></para>
</td>
<td2 colspan="3" with>
<para><text>Helen</text></para>
</td>
</tr2>
<tr>
<td style="with:445px;">
<para><text>Sam</text></para>
</td>
<td>
<para><text>Emma</text></para>
<para><text>George</text></para>
</td>
<td>
</td>
<td3 colspan="">
<tab />
</td>
</tr3>
</table>
/ EDITED
我想查找并选择整个最后一个单元格及其开始和结束标记(<td
和</td>
)
和相应行(</tr>
)的结束标记,即:
编辑:
以下是使用RegEx在上表中选择的内容:
来自<td1 to </tr1>
- 或来自<td2 to </tr2>
- 或来自<td3 to </tr3>
/ EDITED
格式(缩进和新行必须保留),我的意思是我不能把,例如左
</tr>
位于单元格的结束标记前面(</td>
)
缩进只是空格字符。
感谢您的帮助......
答案 0 :(得分:0)
你能用正则表达式做的最好的事情是:
<td(([^<]|<(?!\/td>))*)<\/td>\s*<\/tr>(?!(.|\r|\n)*<tr)
但是当你有嵌套表时,这有点丑陋,资源密集并且会中断。对于您正在使用的编程语言,确实使用XML或HTML解析器的路径更好。
如果您想从每一行中选择最后一个单元格,正如您更新的问题所示,请忽略这样的否定前瞻:
<td(([^<]|<(?!\/td>))*)<\/td>\s*<\/tr>
这里的工作示例:http://refiddle.com/gt2