有效的正则表达式在Sublime Text中未正确匹配

时间:2015-08-20 22:50:17

标签: regex sublimetext2

我正在尝试捕获此列表中单引号内的每个名称:http://pastie.org/private/lnuqeqkxenncbyjp81bew

例如,前几场比赛将是:(Dba) (Uk) Co.,Inc.
来自(2, '(Dba)'), (2, '(Uk)'), (2, 'Co.,Inc.'),

我相信这个正则表达式应该正确匹配所有.*\'(.*)\'\),

当我在Sublime Text 2中尝试这个时,我得不到任何匹配。如果我使用https://regex101.com/#pcre尝试,我只在第一行获得匹配,但不是在每一行都匹配。如果我尝试http://regexpal.com/,我会在每一行(我期望的)上得到一个匹配。

我不确定正则表达式Sublime Text 2使用什么样的风格,或者我应该如何更改我的正则表达式以使其找到每个匹配项。

1 个答案:

答案 0 :(得分:2)

您可以使用以下修复程序:

.*'\K(.*)(?='\)(?:,|$))

你只需要逃避单个撇号,我添加了\K以省略匹配的开头和前瞻以排除结尾。 (?:,|$)是为了确保最后一个条目匹配。

enter image description here

如果您打算用$1替换

,请使用您的
.*'(.*)'\)(?:,|$)

enter image description here

好吧,谈到优化正则表达式,你可以在这里使用否定字符类:

.*'([^']*)'\)(?:,|$)

或者

.*'\K([^']*)(?='\)(?:,|$))

这些更快。

相关问题