标题: [问题求助] [已解决]Powershell关于正则表达式在第一次匹配到的结果里再次过滤 [打印本页]
作者: wxyz0001 时间: 2021-5-1 08:43 标题: [已解决]Powershell关于正则表达式在第一次匹配到的结果里再次过滤
本帖最后由 wxyz0001 于 2021-5-1 09:19 编辑
Powershell关于正则表达式在第一次匹配到的结果里再次过滤
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃
第一次匹配的表达式:<td class="title">.*?html 的结果如下:- <td class="title"><a target="_blank" href="../2020_06/duzh20200623.html
- <td class="title"><a target="_blank" href="../2020_05/duzh20200534.html
- <td class="title"><a target="_blank" href="../2020_04/duzh20200424.html
- <td class="title"><a title="微信症候群" href="../2016_07/duzh20160720.html
- <td class="title"><a title="念念不忘,必有回响" href="../2016_06/duzh20160620.html
- <td class="title"><a title="百尺宫墙少年心" href="../2016_05/duzh20160514.html
复制代码
在此<td class="title">.*?html 表达式里怎么再次过滤得到".."后的结果:- /2020_06/duzh20200623.html
- /2020_05/duzh20200534.html
- /2020_04/duzh20200424.html
- /2016_07/duzh20160720.html
- /2016_06/duzh20160620.html
- /2016_05/duzh20160514.html
复制代码
要求用分组向后引用或内嵌等方式与第一次匹配合成一个表达式.
在第一次的结果另起一个表达式 (?<=\.\.).*?html 可以达到要求
但是式分了两次匹配
怎么把- <td class="title">.*?html
复制代码
和复制代码
合并到一个表达式里而达到要求呢
如果一开始就用(?<=\.\.).*?html就会匹配到很多不需要的行,所以需要用(?<=\.\.).*?html再次过滤
求高手指点
作者: went 时间: 2021-5-1 09:01
- $content = Get-Content 4.txt | Out-String
- [System.Text.RegularExpressions.Regex]::Matches($content,'(?<=\<td class="title".*?\.\.).*?html').Value
复制代码
作者: wxyz0001 时间: 2021-5-1 09:18
回复 2# went
正解,谢谢
作者: 523066680 时间: 2021-5-1 09:24
Perl
Mojo::DOM, CSS Selector- my $dom = Mojo::DOM->new( $html );
- grep { s/..//; say $_; } ( $dom->find("td.title a")->map(attr=>"href")->each )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |