首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell 5与7的正则表达式差异

PowerShell 5与7的正则表达式差异
EN

Stack Overflow用户
提问于 2021-11-09 12:38:13
回答 1查看 72关注 0票数 0

我有一个正则表达式,它在PS5和PS7上的返回方式不同。运行以下代码:

代码语言:javascript
复制
$ipres      = Invoke-WebRequest -Method GET -Uri 'https://raw.githubusercontent.com/SecOps-Institute/Tor-IP-Addresses/master/tor-exit-nodes.lst'
$iplist     = $ipres.Content.Split([Environment]::NewLine)

$iplist_v4  = $iplist | Where-Object { $_ -match '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$' } 
$iplist_v6  = $iplist | Where-Object { $_ -notmatch '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$' } 

给出了不同的结果:

PSVersion 5.1.22494.1000

PSVersion 7.2.0

是正则表达式造成了所有的不同。

PSversion5按预期返回。PSversion7返回nothing

IPv6列表包含“所有内容”。

这里的助手是,我将把它作为Azure函数来部署,因此我必须让它在PSversion7上工作。

编辑:

谢谢@DavidBrabant,你对我进行了测试,并提醒我它应该能工作。打印$iplist变量是我的错误,我应该计算一下

代码语言:javascript
复制
$iplist.count

那么我就会看到它包含在一个项目中,但是当打印它们时,它看起来是预期的结果(几个项目)。在regex上运行它是没有意义的,只有一个项是为什么来自正则表达式的响应如此奇怪的原因。

代码语言:javascript
复制
$iplist     = $ipres.Content.Split("`n")

为PS7做了trix,并在PS5上工作。

这就提出了一个问题,环境::纽线是根本原因吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-09 14:21:37

张贴这个,这样我就可以结束这个问题了。

PS5和PS7之间的区别是环境::NewLine,而不是正则表达式在不同PowerShell版本上的行为。

代码语言:javascript
复制
$iplist     = $ipres.Content.Split("`n")

解决了它,并在PS5和PS7上工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69898282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档