【发布时间】:2017-10-23 16:37:28
【问题描述】:
我正在使用 UltraEdit。我有一个包含这样的字符串的文本文件
Workspace\\Trays\\Dialogs\\Components, Expand, kThisComputerOnly, P_BOOLEAN },
WebCommonDialog Sign_Out, Left, kThisComputerOnly, P_INTEGER_RANGE(0, 4096) },
ThreeDTextDlg, x, kThisComputerOnly, P_INTEGER_RANGE(0, 4096) },
Preferences\\Graphics, CtxDbgMaxGLVersionMajor, kThisComputerOnly, P_INTEGER },
UltraEdit 允许 PERL、UNIX 和 UltraEdit 风格的 RegEx。 我需要选择第二个逗号和行尾的所有内容并将其删除。
使用 regexpal.com 我尝试了几种不同的方法,但无法弄清楚。
/,\s.+/ selects the first comma
/[,]\s.+/ same as above
我不知道如何选择第二个及以后的命令。
我还搜索了 StackOverflow 并找到了几个示例,但无法将它们更改为适合我。
谢谢。
【问题讨论】:
-
尝试
^([^,]*,[^,]*),.*并用 Unix 正则表达式选项替换为\1。 -
@BenShelton 当您不对分组标记应用任何量词时,为什么还要使用非捕获组?
,.*,在语义上不是相同的吗?另外,我认为这不是 OP 想要删除的内容 -
在 Regexpal.com 中,
^([^,]*,[^,]*),.*选择了整行,UltraEdit 没有找到匹配项。 -
@BradAskins:它确实选择了整行,但如果您替换为
\1,则应该保留到第二个,的行的开头。见regex101.com/r/1mGaCM/1 -
@BradAskins 它应该选择整行,但随后您使用捕获组将整行替换为您要保留的部分。对于 UltraEdit 部分,您是否碰巧知道他们的正则表达式实现是什么?