gpt4 book ai didi

regex - 在PowerShell中替换字符串中的第一个匹配字符

转载 作者:行者123 更新时间:2023-12-01 09:25:48 27 4
gpt4 key购买 nike

在下面的字符串中,

apache:x:48:48:Apache:/var/www:/sbin/nologin

如何用逗号替换第一个冒号(只有这个冒号),以便得到以下字符串?

apache,x:48:48:Apache:/var/www:/sbin/nologin

此外,代码必须支持多行文件,并且仅替换每行中的第一个逗号。

最佳答案

使用正则表达式:

PS C:\> <b>$s = 'apache:x:48:48:Apache:/var/www:/sbin/nologin'</b>
PS C:\> <b>$s -replace '^(.*?):(.*)','$1,$2'</b>
apache,x:48:48:Apache:/var/www:/sbin/nologin

正则表达式分解:

  • ^(.*?)::字符串开头和冒号之间的最短匹配(即第一个冒号之前的文本)。
  • (.*):字符串的其余部分(即第一个冒号之后的所有内容)。

括号对子表达式进行分组,因此它们可以在替换字符串中作为 $1$2 引用。

进一步解释:

  • ^ 匹配字符串的开头。
  • .* 匹配任意数量的字符(. ⇒ 任意字符,* ⇒ 零次或多次)。
  • .*? 的作用相同,但给出的是最短匹配 (?) 而不是最长匹配。这称为“非贪婪匹配”。

关于regex - 在PowerShell中替换字符串中的第一个匹配字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24612202/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com