PowerShell中的Regex分隔符

mzmfm0qo  于 2023-08-08  发布在  Shell
关注(0)|答案(2)|浏览(117)

当我试图在powershell上编辑一个值时,有些东西在我的脑海中停留。
实际上,我简单地想做的是确保分隔符形式的字符不重复,不发生在开头和结尾

$oldString = "192.168.7.1,192.168.7.2,192.168.7.3,192.168.7.*"

个字符

nhaq1z21

nhaq1z211#

不要尝试有条件地匹配前导或尾随逗号,而是将操作分解为3个步骤:

  • 将字符串拆分为单个值的数组
  • 筛选出要删除的值
  • 再次使用逗号分隔符将这些值连接在一起

您可以在多个语句中执行此操作:

# split
$values = $oldString -split ','

# filter
$values = $values |Where-Object { $_ -ne '192.168.7.2' }

# join
$newString = $values -join ''

字符串
...或者你可以在一个表达式中链接这3个操作:

$newString = $oldString -split ',' -ne '192.168.7.2' -join ','


-split总是返回一个字符串 array,这意味着-ne将充当过滤器/筛子,而不是布尔运算符。
这意味着它将与任何在过滤器模式下工作的比较运算符一起工作:

$newString = $oldString -split ',' -like '*.[1-3]' -join ','

hk8txs48

hk8txs482#

如果我理解正确的话,应该是这样的:

$oldString -replace "^,|,$|(?<=,),+"

字符串
另外,https://regex101.com/站点对于计算Regex的

相关问题