Blu*_*luz 3 regex string powershell comma export-to-csv
在以下字符串中,
apache:x:48:48:Apache:/var/www:/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
我怎么能用逗号替换第一个冒号(只有这个冒号)所以我会得到以下字符串?
apache,x:48:48:Apache:/var/www:/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
此外,代码必须支持具有多行的文件,并且仅替换每行中的第一个逗号.
使用正则表达式:
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
Run Code Online (Sandbox Code Playgroud)
Regexp细分:
^(.*?):
:字符串开头和冒号(即第一个冒号前的文本)之间的最短匹配.(.*)
:字符串的其余部分(即第一个冒号后的所有内容).parantheses对子表达式进行分组,因此可以在替换字符串中将它们作为$1
和引用$2
.
进一步说明:
^
匹配字符串的开头..*
匹配任意数量的字符(.
⇒任何字符,*
⇒零次或多次)..*?
做同样的,但给出最短的匹配(?
)而不是最长的匹配.这被称为"非贪婪的比赛".