解决方案:
查找:<([a-z]+) .?=".?( */?>)
替换为:<\1$2
我通常把表格从论坛网站复制到博客网站。
我不希望所有开始标记都有属性。
桌子是这样的:
1|<table unwanted_attribute_1>
2|<tbody unwanted_attribute_2>
3|<tr unwanted_attribute_3><td unwanted_attribute_4><br unwanted_attribute_5 /></td></tr>
4|<tr unwanted_attribute_3><td unwanted_attribute_4><span unwanted_attribute_6></span></td></tr>
5|</tbody>
6|</table>
Attributes like "cellspacing", "class", "style", "href" and "target".我找到了两个答案,但似乎没有帮助。
[A1]:它使用一个固定的条件来查找和替换特定的术语。但是在我的情况下,开始标记无处不在,并且随着文章的不同而变化。
[A2]:我试过了这个答案,但它没有按以下方式工作。
我找到<([a-z]+) .*=".*">并替换为<\1>。
第1行和第2行工作,但第3和第4行搞砸了。
我该如何使用regex?
编辑:
<table cellspacing="0" class="t_table" style="background-color: #f8f8f8; border-collapse: collapse; border: 1px solid rgb(227, 237, 245); color: #444444; empty-cells: show; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16px; line-height: 24px; table-layout: auto; width: 673px; word-wrap: break-word;">
<tbody style="word-wrap: break-word;">
<tr style="word-wrap: break-word;"><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">◆<a class="relatedlink" href="◆◆◆" style="border-bottom: 1px solid blue; color: #639805; word-wrap: break-word;" target="_blank">◆◆</a>◆◆◆</td><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">◆◆◆◆<br style="word-wrap: break-word;" />◆◆◆◆</td></tr>
<tr style="word-wrap: break-word;"><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">◆◆◆◆◆◆</td><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">= ◆◆◆◆ =<br style="word-wrap: break-word;" /></td></tr>
<tr style="word-wrap: break-word;"><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">◆◆◆◆◆◆</td><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">= ◆◆◆◆ =<br style="word-wrap: break-word;" /></td></tr>
<tr style="word-wrap: break-word;"><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">◆◆◆◆◆◆</td><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">= ◆◆◆◆ =<br style="word-wrap: break-word;" /></td></tr>
<tr style="word-wrap: break-word;"><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">◆◆◆◆◆◆</td><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">◆◆◆◆</td></tr>
<tr style="word-wrap: break-word;"><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">◆◆◆◆◆◆</td><td style="border: 1px solid rgb(227, 237, 245); overflow: hidden; padding: 4px; word-wrap: break-word;">◆◆◆◆</td></tr>
</tbody></table>发布于 2016-09-16 15:02:09
您的.*是贪婪的,所以它匹配所有东西,直到您的行上的最后一个">。下面是您的第一个regex所做的工作:
https://regex101.com/r/qK5uY3/1
尝试:
<([a-z]+) .*?=".*? *\/?>我建议查看notepad++的插件。使用regex解析HTML可能会出现许多问题。
https://regex101.com/r/qK5uY3/2
关闭*\/?之前的>匹配可选的空格和一个自结束元素。我喜欢使用的\h,但我不知道Notepad++是否支持它(我是mac‘’er)。
更新:
若要捕获自关闭元素组的结束位,则需要完整的结束部分。
<([a-z]+) .*?=".*?( *\/?>)然后用第二个被俘组代替。
<\1$2https://stackoverflow.com/questions/39534394
复制相似问题