【问题标题】:Delete the line beginning with given string and the following n lines删除以给定字符串开头的行和后面的 n 行
【发布时间】:2016-10-26 23:16:42
【问题描述】:

我有一个文件 HTML,如下所示:

      <tr>
        <td>SOMETHING1</td>
        <td>SOMETHING2</td>
        <td>SOMETHING3</td>
      </tr>
      <tr>
        <td>SOMETHING1</td>
        <td>SOMETHING2</td>
        <td>SOMETHING3</td>
      </tr>
      <tr>
        <td>SOMETHING1</td>
        <td>SOMETHING2</td>
        <td>SOMETHING3</td>
      </tr>

    </table>
    <br>
    </div>
    <a href="javascript:;" onmousedown="toggleDiv('20161023');">Sunday 23 ...   </a></h3>
    <br>
    <div class="time_div" id="20161023" style="display:none">
    <p class="dep_parag">Test automation on Sunday 23 October</p>
    <table id="table" border="1" cellpadding="3" cellspacing="0">

    <tr>
        <td>SOMETHING1</td>
        <td>SOMETHING2</td>
        <td>SOMETHING3</td>
      </tr>
      <tr>
        <td>SOMETHING1</td>
        <td>SOMETHING2</td>
        <td>SOMETHING3</td>
      </tr>
      <tr>
        <td>SOMETHING1</td>
        <td>SOMETHING2</td>
        <td>SOMETHING3</td>
      </tr>

如您所见,有一个表格行列表,除以一个带有一些 javascript 的部分(该部分以 开头,以 结尾)

这只是一个包含超过 300.000 个表格行的 html 页面的提取!

我必须删除带有 javascript 的部分,因为我只需要一个长的表格行列表,干净,它们之间没有任何内容。

与其手动操作,那太疯狂了,我想要一些东西(正则表达式)一键清理文件(我曾经在 NOTEPAD++ 上运行简单的正则表达式,但这对我来说有点难)

我在想这样的事情:

删除从cellspacing="0">的所有行

或者

删除 中的所有行以及以下 8 行。

有人能这么温柔地帮我处理这个正则表达式吗?

非常感谢! :)

【问题讨论】:

  • 不确定是否理解正确,尝试使用搜索模式正则表达式,将此正则表达式替换为空\r\n(.*\r\n){2}.*javascript.*\ r\n(.*\r\n){4}

标签: regex notepad++


【解决方案1】:

假设您对不规则的空白不感兴趣,那么搜索模式如何:

</table>.*?<table.*?>

使用空的“替换为”字符串,勾选“正则表达式”和“。匹配换行符”选项。

【讨论】:

  • 您必须使.* 不贪心(即.*?),否则您将删除超出预期的内容。
  • 是的,绝对正确 - 从我的 N++ 窗口翻译丢失!已更新。
【解决方案2】:

我不太明白您要删除哪个部分(我的理解是从&lt;/table&gt;cellspacing="0"&gt; ?),但应该相当容易。你的意思是这样的吗?

<a href="javascript([^\n]+\r\n){5}

【讨论】:

  • 我知道。但是删除 下面的 8 行同样简单。
  • 利用表结构,只需 .* => 就可以了。 (必须勾选 . Include new line 选项)我的 PC 上的某些 NPP 版本曾经有一个错误:在正则表达式中替换为空字符串会导致 NPP 崩溃。所以通常我用某物代替。但我同意非贪婪匹配是正式的方式。
【解决方案3】:

这个正则表达式将与标志 s 一起工作,用于 php、python 的单行,用于带有 DOTALL 选项的 java 启动表达式

\<\/table\>.+?(?=javascript\:\;).+?(?=\<table.+?cellspacing\=\"0\"\>)\<table.+?cellspacing\=\"0\"\>

【讨论】:

猜你喜欢
  • 2015-10-28
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多