如何在Notepad++中提取方括号内的逗号?

3

例如:

[TEXT1,TEXT2,TEXT3]

我的表达式:[\[].*,.*[\]]

查找有逗号的字符串(在方括号中间),但我只想明确匹配方括号中存在的逗号。

我需要将逗号替换为空格 - 但仅在方括号中。

我尝试过[\[],[\]],但那不起作用 -

\[(.*?)\]也会找到中间的文本 - 但我不想要整个字符串。

有人能建议我如何只找到方括号中间的逗号吗?


抱歉,我应该表述得更清楚。[Text1,Text2,Text3] 也可以存在于其他逗号所在的行中 - 但我只想要方括号中的逗号。 - learningalways
4个回答

6

查找内容:

(?:\[|(?!^)\G)[^,\]]*\K,

替换为:
空格

分解:


太棒了。不幸的是,我仍然觉得\G\K很困惑。 - d0nut

5

我知道这是一个老问题,但我正在寻找解决同样问题的方法,并找到了以下解决方案:,(?=[^\[]*\])

希望这能帮助到偶然看到这篇文章的人!

注意:使用Text Wrangler而不是Notepad++。


0

在正则表达式中,方括号通常需要进行转义,因此类似于

\[.*(,).*\] 

能够工作 - 正则表达式第一组(在其他工具中捕获/可替换的部分,在我没有记事本++的情况下)将是您想要的带括号的单个逗号。


他逃脱了它们的限制,但没有正确使用Markdown,导致反斜杠被剥离。我已经修复了这个问题。 - Lucas Trzesniewski
以上的代码给我了和之前在notepad++中得到的相同结果,我只能获取到括号里的文本,而无法单独获取逗号。 - learningalways

0

我用了这个:

(?<=[\[,])[^\],]*(,)

Regex101


这很有帮助,但我仍然有一个问题。抱歉,我应该表述得更清楚。[Text1,Text2,Text3]也可以存在于其他逗号所在的行中 - 但我只想要方括号中的逗号。因此,如果我有一行例如:Hello,world,[Text1,Text2,Text3],hello,我只想要方括号中返回的逗号。 - learningalways

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接