在以下字符串中,
apache:x:48:48:Apache:/var/www:/sbin/nologin
我如何用逗号替换第一个冒号(且仅此一个),以便得到以下字符串?
apache,x:48:48:Apache:/var/www:/sbin/nologin
另外,代码必须支持多行文件,并且仅替换每行中的第一个逗号。
使用正则表达式:
PS C:\> $s = 'apache:x:48:48:Apache:/var/www:/sbin/nologin'
PS C:\> $s -replace '^(.*?):(.*)','$1,$2'
apache,x:48:48:Apache:/var/www:/sbin/nologin
正则表达式细目:
^(.*?):
:字符串开头和冒号(即第一个冒号之前的文本)之间的最短匹配。(.*)
:字符串的其余部分(即,第一个冒号之后的所有内容)。括号将子表达式分组,因此可以在替换字符串中以$1
和引用它们$2
。
进一步说明:
^
匹配字符串的开头。.*
匹配任意数量的字符(.
⇒任何字符,*
⇒零次或多次)。.*?
效果相同,但是给出了最短的匹配(?
)而不是最长的匹配。这称为“非贪婪匹配”。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句