Regex Powershell正则表达式用于复杂的链接选择

Regex Powershell正则表达式用于复杂的链接选择,regex,powershell,Regex,Powershell,长字符串包含以下类型的链接: 让我们称之为相关链接。字符串可以包含零个、一个或多个此类相关链接。字符串还可以包含其他不相关的链接 目标是选择字符串中的第一个相关链接 我可以用一个技巧做到这一点,但这能用一个正则表达式和一场比赛做到吗 这里是我目前使用的技巧: $regex='(^.*)(http://.*yyy..JPG)' $TMP=$S $firstmatch='' while ($TMP -match $regex) { $TMP=$Matches[1] $firstmatch=$M

长字符串包含以下类型的链接:

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

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

我可以用一个技巧做到这一点,但这能用一个正则表达式和一场比赛做到吗

这里是我目前使用的技巧:

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

您可以使正则表达式模式不贪婪。这样,它只匹配最小值

' 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

欢迎来到苏。。。它不是做作业的网站。发布你的代码,以显示你在解决这个问题上的努力,从而说服其他人帮助你。请也完成这次旅行。享受-嗨,警告先生。这是我的代码:$TMP=$R2$regex='^.*http{0,1}://.'+'yyy..JPG'$firstmatch=而$TMP-match$regex{$TMP=$Matches[1]$firstmatch=$Matches[2]}$link=$firstmatchLol。。不审查的目的是提高问题的质量,帮助新用户温和地适应SO规则。所以通过编辑问题,将注释代码添加到问题中。这样做可以提高可读性。很高兴看到改进。现在希望有人能帮助你。祝你在SO过得愉快-谢谢,Olaf,但是您的解决方案不适用于字符串“htp://aaa/zzz.jpg htp://bbb.yy1.jpg”,返回整个字符串。当然不适用。原始帖子中的字符串在http之间没有空格。如果您更改字符串,您也必须更改模式。我添加了空格,因为该站点无法正确显示带有http的文本。请把它们拿走。这个解决方案仍然不起作用。我无法复制——它在我的系统上工作,就像我发布它一样。”http://aaa/bb/yyy1.jpg http://c/d/e/f/g/h/yyyz.jpg“-匹配”http://.*yyy.\.JPG“。如果你想在注释中发布代码,你必须用反勾号将其括起来。如果你一次又一次地更改条件,你将永远不会得到合理的结果。从某种程度上来说,你需要做你自己的研究,并根据你的需要修改你的代码。我再次更改了答案以反映您的新申请。如果你能接受我的回答,那就太公平了。