[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]Powershell关于正则表达式在第一次匹配到的结果里再次过滤

本帖最后由 wxyz0001 于 2021-5-1 09:19 编辑

Powershell关于正则表达式在第一次匹配到的结果里再次过滤
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃

第一次匹配的表达式:<td class="title">.*?html  的结果如下:
  1. <td class="title"><a target="_blank" href="../2020_06/duzh20200623.html
  2. <td class="title"><a target="_blank" href="../2020_05/duzh20200534.html
  3. <td class="title"><a target="_blank" href="../2020_04/duzh20200424.html
  4. <td class="title"><a title="微信症候群" href="../2016_07/duzh20160720.html
  5. <td class="title"><a title="念念不忘,必有回响" href="../2016_06/duzh20160620.html
  6. <td class="title"><a title="百尺宫墙少年心" href="../2016_05/duzh20160514.html
复制代码
在此<td class="title">.*?html 表达式里怎么再次过滤得到".."后的结果:
  1. /2020_06/duzh20200623.html
  2. /2020_05/duzh20200534.html
  3. /2020_04/duzh20200424.html
  4. /2016_07/duzh20160720.html
  5. /2016_06/duzh20160620.html
  6. /2016_05/duzh20160514.html
复制代码
要求用分组向后引用或内嵌等方式与第一次匹配合成一个表达式.
在第一次的结果另起一个表达式 (?<=\.\.).*?html 可以达到要求
但是式分了两次匹配
怎么把
  1. <td class="title">.*?html
复制代码
  1. (?<=\.\.).*?html
复制代码
合并到一个表达式里而达到要求呢
如果一开始就用(?<=\.\.).*?html就会匹配到很多不需要的行,所以需要用(?<=\.\.).*?html再次过滤
求高手指点

  1. $content = Get-Content 4.txt | Out-String
  2. [System.Text.RegularExpressions.Regex]::Matches($content,'(?<=\<td class="title".*?\.\.).*?html').Value
复制代码
1

评分人数

TOP

回复 2# went
正解,谢谢

TOP

Perl
Mojo::DOM, CSS Selector
  1. my $dom = Mojo::DOM->new( $html );
  2. grep { s/..//; say $_; } ( $dom->find("td.title a")->map(attr=>"href")->each )
复制代码

TOP

返回列表