Powershell正则表达式用于棘手的链接选择

时间:2018-01-15 23:49:59

标签: regex powershell

长字符串包含以下类型的链接:http://<something>/yyy<one字符&gt; .jpg示例:http://aaa/bb/yyy1.jpg http://c/d/e/f/g/h/yyyz.jpg

我们称之为相关链接。该字符串可以包含零个,一个或多个此类相关链接。该字符串还可以包含其他不相关的链接。

目标是选择字符串中的第一个相关链接。

我可以通过一个技巧来做到这一点,但这可以通过一个正则表达式和一个匹配来完成吗?

P.S。这是我目前使用的技巧:

$regex='(^.*)(http://.*yyy..JPG)' 
$TMP=$S
$firstmatch=''
while ($TMP -match $regex)
{
 $TMP=$Matches[1]
 $firstmatch=$Matches[2]
} 
$link=$firstmatch

1 个答案:

答案 0 :(得分:1)

你可以使正则表达式非贪婪。这样它只匹配最小值。

' http://aaa/zzz.jpg http://aaa/zzz.jpg http://bbb.yyy1.jpg'  -match '\s(http://[\S]*?yyy.\.JPG)' 
$Matches[1]

结果:

True
http://bbb.yyy1.jpg