Regex 正则表达式将所有多行html<;td></td>;除了嵌套在另一行中的组合之外,其他组合都在一行中<;td></td>;
试图找到一种使用正则表达式将所有多行HTMLTD组合转换为一行的方法,但嵌套在另一个td中的组合除外 我正试图在VisualStudio中进行查找和替换(但我可以使用wildedit等其他工具)来查找跨多行的所有td标记,并将它们全部放在一行上。我想删除所有退货/标签。但问题是,如果在父td中嵌套了另一个表,我就不想这样做 例如,我想将其转换为:Regex 正则表达式将所有多行html<;td></td>;除了嵌套在另一行中的组合之外,其他组合都在一行中<;td></td>;,regex,regex-negation,Regex,Regex Negation,试图找到一种使用正则表达式将所有多行HTMLTD组合转换为一行的方法,但嵌套在另一个td中的组合除外 我正试图在VisualStudio中进行查找和替换(但我可以使用wildedit等其他工具)来查找跨多行的所有td标记,并将它们全部放在一行上。我想删除所有退货/标签。但问题是,如果在父td中嵌套了另一个表,我就不想这样做 例如,我想将其转换为: <table class="Top"> <tr> <td class="TopLeft">
<table class="Top">
<tr>
<td class="TopLeft">
<img src="img/spacer.gif" class="Size">
</td>
<td class="TopTile">
<img src="img/spacer.gif" class="Size">
</td>
<td class="TopRight">
<img src="img/spacer.gif" class="Size">
</td>
</tr>
<tr>
<td class="LeftTile">
</td>
<td class="TitleBar">
Blah Blah Blah
</td>
<td class="RightTile">
</td>
</tr>
<tr>
<td class="LeftTile">
</td>
<td>
<table cellpadding="2" cellspacing="0" border="0" class="EntryLight">
<tr>
<td class="TopLeft">
<img src="img/spacer.gif" class="Size">
</td>
<td class="TopTile">
<img src="img/spacer.gif" class="Size">
</td>
<td class="TopRight">
<img src="img/spacer.gif" class="Size">
</td>
</tr>
<tr>
<td class="LeftTile">
</td>
<td class="TitleBar">
Blah Blah Blah
</td>
<td class="RightTile">
</td>
</tr>
</table>
</td>
</tr>
</table>
废话连篇
废话连篇
为此:
<table class="Top">
<tr>
<td class="TopLeft"><img src="img/spacer.gif" class="Size"></td>
<td class="TopTile"><img src="img/spacer.gif" class="Size"></td>
<td class="TopRight"><img src="img/spacer.gif" class="Size"></td>
</tr>
<tr>
<td class="LeftTile"> </td>
<td class="TitleBar">Blah Blah Blah</td>
<td class="RightTile"> </td>
</tr>
<tr>
<td class="LeftTile"> </td>
<td>
<table cellpadding="2" cellspacing="0" border="0" class="EntryLight">
<tr>
<td class="TopLeft"><img src="img/spacer.gif" class="Size"></td>
<td class="TopTile"><img src="img/spacer.gif" class="Size"></td>
<td class="TopRight"><img src="img/spacer.gif" class="Size"></td>
</tr>
<tr>
<td class="LeftTile"> </td>
<td class="TitleBar">Blah Blah Blah</td>
<td class="RightTile"> </td>
</tr>
</table>
</td>
</tr>
</table>
废话连篇
废话连篇
如果已安装Visual Studio 2012,则此选项适用于您的示例。这是第一个使用.NET正则表达式库的版本:
寻找
(?<=<td[^>]*>)(?>\s+)(?!<table)|(?<!</table>\s*)\s+(?=</td>)
(?)(?>\s+(!)
以零代替一切
说明:
(?<= # Assert that it's possible to match...
<td[^>]*> # an opening <td> tag
) # before the current position,
(?>\s+) # then match one or more whitespace characters possessively,
(?!<table) # but only if the next tag isn't an opening <table> tag.
| # Or:
(?<! # (unless we're right after...
</table> # a closing </table> tag
\s* # which may be followed by whitespace)
) # then
\s+ # Match whitespace
(?=</td>) # until the next closing </td> tag
(?“嵌套”和“正则表达式”是相当不兼容的概念。如果你有Visual Studio 2012,你可以用一些肮脏的技巧来管理它,但只有这样,因为这是第一个使用.NET正则表达式库的版本。需要注意的是:我不需要在一个过程中完成所有操作。我可以运行多个过程。我只是尝试用IE p的方式修复一些格式问题处理td标签之间的额外/空白。它们会破坏页面布局。FireFox和Chrome没有问题。但我有一大堆代码没有编写,它们使用嵌套表进行布局,这是我现在遇到的一个问题。=/我还没有Visual Studio 2012。我现在正在运行2010。我得到了相当的支持这样做的结果很好:\n现在,我已经将事情简化为:pass1:\\n:b+{.*}\n:b+\pass2:\\n:b+\以涵盖我正在处理的多行tds的两个最常见的差异。