用于匹配每行中第一次出现逗号的正则表达式

Par*_*gue 7 regex notepad++

正则表达式只用于匹配逗号的第一个实例,除了逗号之外什么都没有?

我已经尝试了类似的东西,{1},我认为这与非贪婪的资格赛有关,(.*?),但我没有成功.

我正在使用Notepad ++尝试将代码从另一种语言转换为JavaScript.我想把第一个逗号变成冒号.它看起来像这样:

'TJ', 'Tajikistan' ,
'TZ', 'Tanzania' ,
'TH', 'Thailand' ,
'TL', 'Timor-Leste' ,
'TG', 'Togo' ,
'TK', 'Tokelau' ,
'TO', 'Tongo' ,
'TT', 'Trinidad and Tobago' ,
Run Code Online (Sandbox Code Playgroud)

找到:/,/
替换为::
0次更换

记事本的Screnshot ++

rua*_*akh 16

你可以做的是,而不是只用冒号替换第一个逗号,你可以自动更换逗号及其之后的所有与冒号加的一切,是逗号后.(例如,在'TZ', 'Tanzania' ,这种方法将取代, 'Tanzania' ,: 'Tanzania' ,.)后,由于行的其余部分已经发生了更换,记事本+ +不重新审视它,看它是否包含一个逗号.

你这样做的方法是使用一个捕获组,它允许替换字符串包含正则表达式匹配的部分内容.

具体来说,你会替换它("查找内容"):

,(.*)
Run Code Online (Sandbox Code Playgroud)

意思是"逗号(,),加上零个或多个字符(.*),并捕获后者(())",用此("替换为"):

:$1
Run Code Online (Sandbox Code Playgroud)

意思是"冒号(:),加上第一个捕获组($1)捕获的任何东西".

  • @Parseltongue:在正则表达式中,`(.*)`表示"零或多个非换行字符 - 并'捕获'它们(即,记住它们供以后参考)".在替换字符串中,"$ 1"表示"您捕获的内容".(如果你有多组`(...)`,那么你也可以有'$ 2`,`$ 3`等等.)所以这可以通过用冒号替换逗号和行的其余部分来实现,再加上其余部分.之后,由于该行的其余部分已经进行了替换,因此Notepad ++不会重新检查它以查看它是否包含逗号. (3认同)