PowerShell:输出正则表达式而不是结果

发布于 2025-01-04 20:10:29 字数 369 浏览 1 评论 0原文

好吧,老访客了,第一次发帖。

我不希望 PowerShell 告诉我正则表达式的结果是“True”或“False”,而是想要该字符串。我知道还有其他方法可以做到这一点,并且我已经有了一个工作版本,但我想使用正则表达式来“提取”字符串。

例如:

$ipconfig = ipconfig | select-string "IPv4" | select-object -first 1
$ipconfig -match "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"

只返回“True”,而不是我想要 IP 地址。

有没有办法使用正则表达式来完成此任务?

谢谢!

Ok, long time visitor, first time post.

Instead of PowerShell telling me the result of my Regular Expression is "True" or "False", instead I would like the string. I know there are other ways to do this and I already have a working version, but I would like to use Regular Expressions to "extract" the string.

For example:

$ipconfig = ipconfig | select-string "IPv4" | select-object -first 1
$ipconfig -match "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"

Just returns "True", instead I would like the IP address.

Is there a way of accomplishing this using regex?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌伤浅笑 2025-01-11 20:10:29

你已经得到了它,只需要检查你免费获得的变量:

$ipconfig = ipconfig | select-string "IPv4" | select-object -first 1
if ($ipconfig -match "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b") { 
    $matches[0]
}

或者,你可以使用 .NET 对象:

$ipconfig = ipconfig | select-string "IPv4" | select-object -first 1
([regex]"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b").matches($ipconfig) | % { $_.value }

享受:)

You've already got it, just need to check a variable you get for free:

$ipconfig = ipconfig | select-string "IPv4" | select-object -first 1
if ($ipconfig -match "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b") { 
    $matches[0]
}

Alternatively, you can use the .NET object:

$ipconfig = ipconfig | select-string "IPv4" | select-object -first 1
([regex]"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b").matches($ipconfig) | % { $_.value }

Enjoy :)

瑾夏年华 2025-01-11 20:10:29

使用-替换:

 $ipconfig = ipconfig | select-string "IPv4" | select-object -first 1 
 $ipconfig -replace '.*\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b.*','$1' 

Using -replace:

 $ipconfig = ipconfig | select-string "IPv4" | select-object -first 1 
 $ipconfig -replace '.*\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b.*','$1' 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文