【问题标题】:How to modify regex to to remove all strings followed by CR or LF如何修改正则表达式以删除所有后跟 CR 或 LF 的字符串
【发布时间】:2017-12-01 17:16:35
【问题描述】:

我想从 html 中获取来自 Hot Bird 13.0E 卫星的转发器频率的一列
链接在这里:http://pl.kingofsat.net/pos-13E.php

这个保存的 html 页面很大,有数千行,很难作为模式呈现。更简单的方法是从中提取简短的内容。


这里是演示链接:
https://regex101.com/r/9k9NGA/2

在记事本++中

- Ctrl+H
- 查找内容:.*(\d{5}\.\d{2}).* 定义的频率
*-替换为:$1
*- 检查环绕
*- 检查正则表达式
*- 全部替换

这是部分代码:

"basc_tp('m0')"><span class="nbc">11</span><a class="bld">Hot Bird 13C</a></td> <td width="7%" class="bld">bbhg 10719.25</td><td width="2%" class="bld">V</td><td class="w3-hide-small" width="3%"><a class="bld"<td class="pos" dir="ltr">13.0&deg;E</td> <td width="20%"><img src="/action_collapse.gif" id="im1" style="cursor: pointer" onclick="basc_tp('m1')"><span class="nbc">3</span><a class="bld">Hot Bird 13B</a></td> <td width="7%" class="bld"> 10727.00</td><td width="2%" class="bld">H</td><td class="w3-hide-small" width="3%"><a class="bld" href="tp.php?tp=225">111</a></td><td class="w3-hide-small" width="10%"><a class="bld" href="pos" dir="ltr">13.0&deg;E</td> <td width="20%"><img src="/action_collapse.gif" id="im2" style="cursor: pointer" onclick="basc_tp('m2')"><span class="nbc">30</span><a class="bld">Hot Bird 13C</a></td> <td width="7%" class="bld"> 10758.00</td><td width="2%" class="bld">V</td><td class="w3-hide-small" width="3%"><a class="bld" href="tp.php?tp=5059">112</a></td><td class="w3-hide-small" width="10%"><a class="bld" href=="cursor: pointer" onclick="basc_tp('m3')"><span class="nbc">19</span><a class="bld">Hot Bird 13C</a></td> <td width="7%" class="bld"> 10775.00</td><td width="2%" class="bld">H</td><td class="w3-hide-small" width="3%"><a class="bld" href="tp.php?tp=227">113</a></td><td class="w3-hide-small" width="10%"><a class="bld" href=></table><div class="frqb"></div></div> <table class="frq"><tr bgcolor="#D2D2D2"> <td class="pos" dir="ltr">13.0&deg;E</td> <td width="20%"><img src="/action_collapse.gif" id="im10" style="cursor: pointer" onclick="basc_tp('m10')"><span class="nbc">16</span><a class="bld">Hot Bird 13C</a></td> <td width="7%" class="bld"> 10911.00</td><td width="2%" class="bld">V</td><td class="w3-hide-small" width="3%"><a class="bld"

这是后面的部分代码:

"basc_tp('m0')"><span class="nbc">11</span><a class="bld">Hot Bird 13C</a></td> <td width="7%" class="bld">bbhg 10719.25 10727.00 10758.00 10775.00 10911.00
应该按表达式顺序添加或更改 i :
.*(\d{5}\.\d{2}).* ,它还将包括空白字符(后视)(CR 和 LF)以进行进一步的操作。 当代码中出现“.*”后面的字符LF或CR时,出现LF或CR时,前面的所有字符和标记都不包括在内,并且前2行没有被删除,为什么?

【问题讨论】:

  • 我觉得你想匹配(\d{5}\.\d{2})|(?s:.)并替换为(?1$1\n:)
  • 我使用 Notepad++ 分 3 步完成了此操作,以分离所需频率是我的方法。regex101 中更多的是不同的引擎,我无法达到要求的输出,替代品应该不是(?1$1\n:),但需要更多的咖啡才能找到解决方案!

标签: html regex notepad++


【解决方案1】:

您可以使用 1-step 方法来获取您的价值观列表:

(\d{5}\.\d{2})|(?s:.)

替换为

(?1$1\n:)

正则表达式模式匹配并捕获到组 1 五个数字、点和 2 个数字,或仅匹配任何字符。替换模式是一个条件,如果匹配 Group 1,则将找到的匹配替换为 Group 1 和换行符,或者替换为空字符串(如果匹配任何其他字符)。请注意,如果您选择 . 匹配换行符 选项,(?:) 可能会被删除。

【讨论】:

  • 一步法获取正则表达式中定义的任何匹配项的结果 - 如果您知道在哪里以及如何使用,则非常令人印象深刻且非常有价值的代码。我仍然很高兴与垂直条交替使用|(?s:.) 来标记选择前后的所有部分,并在类似的情况下使用。非常感谢您的评论:.?:- 仅与.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 2021-11-04
相关资源
最近更新 更多