Perl Regex字[max 7characters]字

时间:2015-06-24 21:24:23

标签: regex perl

我需要删除与此类模式匹配的文本。我正在使用需要用PERL(rxrepl.exe)编写的正则表达式的工具。我已经做了第一步,更容易删除行尾的所有符号。 现在我只想发现如何在PERL正则表达式中纠正这个正则表达式。

My pattern:   <table cellpadding="5".*<blockquote>.{4,10}.*</blockquote></td></tr></table> 

===文件示例

<table cellpadding="5" cellspacing="0" border="0" width="100%">
<tr>
<td style="border-bottom-color: #d0d0d0; border-bottom-style: solid; border-bottom-width: 1px; background-color: #eaeaea;"><!-- F1E896 -->
<font style="font-size: 13px;"><b>TITLE 25</b></font><br><font color="#808080">18-06-2015 | <a href="http://www.link1.co.uk/" target="_top">Web page</a> | <a href="" target="_top">Local page</a></font>
</td>
</tr>
<tr>
<td style="border-bottom-color: #f0f0f0; border-bottom-style: solid; border-bottom-width: 1px; background-color: #f8f8f8;"><!-- F5F2C7 -->
<blockquote>
<a href="">HMRC relaxes PAYE late filing penalties</a><br><br>HMRC will begin relaxing automatic late filing penalties for people who send PAYE information late, officials have...
      <br><br><a href="http://www.gogle.com">Employers 'feel the pinch' of skills shortages</a><br>
</blockquote>
</td>
</tr>
</table><br>
<br>

<table cellpadding="5" cellspacing="0" border="0" width="100%">
<tr>
<td style="border-bottom-color: #d0d0d0; border-bottom-style: solid; border-bottom-width: 1px; background-color: #eaeaea;"><!-- F1E896 -->
<font style="font-size: 13px;"><b>TITLE 2</b></font><br><font color="#808080"> | <a href="http://www.TITLE2.com/" target="_top">Web page</a> | <a href="" target="_top">Local page</a></font>
</td>
</tr>
<tr>
<td style="border-bottom-color: #f0f0f0; border-bottom-style: solid; border-bottom-width: 1px; background-color: #f8f8f8;"><!-- F5F2C7 -->
<blockquote>
<br>
</blockquote>
</td>
</tr>
</table><br>
<br>

<table cellpadding="5" cellspacing="0" border="0" width="100%">
<tr>
<td style="border-bottom-color: #d0d0d0; border-bottom-style: solid; border-bottom-width: 1px; background-color: #eaeaea;"><!-- F1E896 -->
<font style="font-size: 13px;"><b>TEST80</b></font><br><font color="#808080">18-06-2015 | <a href="https://TEST2.CO.UK" target="_top">Web page</a> | <a href="" target="_top">Local page</a></font>
</td>
</tr>
<tr>
<td style="border-bottom-color: #f0f0f0; border-bottom-style: solid; border-bottom-width: 1px; background-color: #f8f8f8;"><!-- F5F2C7 -->
<blockquote>


 TEXT SAMPLE TEXT
    </blockquote>
    </td>
    </tr>
    </table><br>
    <br>

编辑:要清楚 我想删除从<table cellpadding="5" cellspacing="0" border="0" width="100%"></table>的所有内容<blockquote></blockquote>之间的文字短于10。 感谢您的帮助:)

2 个答案:

答案 0 :(得分:0)

你真的应该使用HTML解析器;它更可靠,更不可能随机打破你没想到的输入。那就是说,

<blockquote>.{4,10}.*</blockquote>

你所拥有的.{4,10}.*将匹配任何字符,4到10次,后跟任意数量的字符。如果您只想匹配最多10个字符的位置,那么删除.*就足够了。

答案 1 :(得分:0)

正确地指出@ilberkyr它甚至匹配空格。

<blockquote> 

Some Text THISWILLNOTBEREMOVED
</blockquote>

@ARR = <HTML>;
$LINE = $ARR =~ /<blockquote>(..)</blockquote>/g;
@lines = split(/\s+/, $LINE);

如果要删除0到10之间的字符长度,请尝试使用空格分割,对于每个数组值检查文本长度(如果较小者不写入HTML文件)。您还应该管理“标签