gpt4 book ai didi

regex - Powershell + 正则表达式 - 如何获得多个匹配项?

转载 作者:行者123 更新时间:2023-12-03 00:03:01 24 4
gpt4 key购买 nike

我已经绞尽脑汁试图解决下面的问题,我将感谢对此的每一条评论或建议。

先决条件

  1. HTML 文本

    <div style="font-size:8pt; font-family: Calibri, sans-serif;">Some text here</div>

2) Powershell v.3

任务

解析给定文本并仅选择标签

方法

$text_to_parse = '<div style="font-size:8pt; font-family: Calibri, sans-serif;">Some    text here</div>'
if($text_to_parse -match '</?div[^<>]*>'){$Matches | fl}
Name : 0
Value : <div style="font-size:8pt; font-family: Calibri, sans-serif;">

问题

1) 正如您所看到的,尽管 /? 它没有显示第二场比赛量词2)我确实明白,必须有“全局” anchor ,但即使在MSDN中我也找不到它:http://msdn.microsoft.com/library/az24scfc.aspx3)\G即使我在开头添加一个或多个字符的模式, anchor 也无法正常工作:

if($text_to_parse -match '\G<.*?/?div[^<>]*>'){$Matches | fl}

Name : 0
Value : <div style="font-size:8pt; font-family: Calibri, sans-serif;">`

问题

1)我做错了什么?我花了四个多小时试图弄清楚但没有成功。2)Powershell中的RegEx实现是否有“全局” anchor ?3)最后,如何仅使用正则表达式来匹配两个 HTML 标签?我可以做这样的事情:

($text_to_parse -replace '\G<.*?/?div[^<>]*>',"").TrimEnd("</div>")

得到这个:

Some text here

但我想用正则表达式来做到这一点。

亲切的问候,尤里

最佳答案

-match 运算符仅返回第一个匹配项。为了获得多个匹配项,请使用以下语法:

$text_to_parse = '<div style="font-size:8pt; font-family: Calibri, sans-serif;">Some    text here</div>' ;
$matches = ([regex]'</?div[^<>]*>').Matches($text_to_parse) ;
$matches[1].Value ; # returns second your occurrence, "</div>"

此方法将返回我们都知道和喜爱的匹配数组,您可以按照您希望的任何方式处理它们。

关于regex - Powershell + 正则表达式 - 如何获得多个匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18400397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com