如何在PowerShell中移除变量内不匹配指定模式的行并保存结果
PowerShell筛选以16开头的字符串
没问题,这事儿在PowerShell里用Where-Object结合正则表达式就能轻松搞定,我给你具体的实现步骤:
首先先确认你的变量$value应该是一个字符串数组(从你给出的内容来看,是多个独立的字符串),定义方式大概是这样:
$value = "1609.68956.43566", "1699809.89.412", "1699.68.436", "1699809.956.6", "Heloo\this is", "HI"
接下来用筛选命令把匹配“以16开头”的行保留下来,存到新变量$filteredValue里:
$filteredValue = $value | Where-Object { $_ -match '^16' }
简单解释下这个命令:
Where-Object是PowerShell里用来筛选集合元素的核心 cmdlet,它会遍历$value里的每一个字符串$_代表当前正在处理的那个字符串元素-match是正则匹配运算符,这里的^16是正则表达式:^表示匹配字符串的开头位置,16就是我们要匹配的前缀,合起来就是“只保留以16开头的字符串”
运行完这个命令后,你输出$filteredValue就能得到你想要的结果:
"1609.68956.43566" "1699809.89.412" "1699.68.436" "1699809.956.6"
这里要提一句:你说的模式“16*”在正则里的含义是“1后面跟0个或多个6”,但从你的预期输出来看,你实际想要的是“以16开头的任意内容”,所以用^16才是正确的匹配规则哦。
内容的提问来源于stack exchange,提问作者user245596
相关产品推荐
相关产品推荐

