正则表达式 - 查找并替换引号之间的单引号

时间:2017-02-16 13:36:32

标签: regex notepad++

我有公司数组,其中许多公司名称(数组键)包含单引号 只想逃避 Starting &之间的单引号字符。 Ending array key中的单引号。

正则表达式:

('[^']*)'s([^']*')

样品:

'BJs Wholesale Club' => 'A',
'BJ's Wholesale Club' => 'A',
'Dillard's' => 'A',
'Divi's Labs' => 'A',
'Divis Labs' => 'A',
'ESKAY K 'N' (PVT) LTD' => 'B',
'Nahar Ind'l Enterprises' => 'A',
'Toys 'R' Us' => 'A',
'ToysR Us' => 'A',

必填项:

'BJs Wholesale Club' => 'A',
'BJ\'s Wholesale Club' => 'A',
'Dillard\'s' => 'A',
'Divi\'s Labs' => 'A',
'Divis Labs' => 'A',
'ESKAY K \'N\' (PVT) LTD' => 'B',
'Nahar Ind\'l Enterprises' => 'A',
'Toys \'R\' Us' => 'A',
'ToysR Us' => 'A',

我的正则表达式不适用于公司包含其他\'s或多个单引号

演示: https://regex101.com/r/23aBEI/2

3 个答案:

答案 0 :(得分:1)

这应匹配您想要转义的每一个引用:

(?<!^)'(?=.*' =>)

它的工作原理是选择不在行首((?<!^))的每个单引号,并在' =>部分((?=.*' =>))的某个时刻使用lookarounds

在记事本++中用\\'替换所有出现的结果会产生以下结果:

'BJs Wholesale Club' => 'A',
'BJ\'s Wholesale Club' => 'A',
'Dillard\'s' => 'A',
'Divi\'s Labs' => 'A',
'Divis Labs' => 'A',
'ESKAY K \'N\' (PVT) LTD' => 'B',
'Nahar Ind\'l Enterprises' => 'A',
'Toys \'R\' Us' => 'A',
'ToysR Us' => 'A',

答案 1 :(得分:1)

由于Notepad ++支持PCRE(允许我们使用lookbehind),并且它还支持多行,我们可以使用以下命令:

可观的外观:(?<!^|=> )'(?! =>|,$)

没有可观的外观:(?<!^)(?<!=> )'(?! =>)(?!,$)

标志:多线。替换为:\\'

答案 2 :(得分:0)

此正则表达式匹配整个公司名称(使用 + 运算符的贪婪)。

'([a-zA-Z0-9\(\)' ]+)'

如果原始字符串还包含&#34; =&gt; &#39; A&#39;&#34;并且你不想解析它,你可以使用它:

^'([a-zA-Z0-9\(\)' ]+)'

注意:您需要激活m标志才能使其正常工作

在第1组中,您将拥有公司名称