2017-02-16 64 views
0

我有很多公司名称(数组键)包含单引号的公司数组。
只是想逃避单引号字符在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', 

我正则表达式不W¯¯扫了公司包含其他吴丹\'s或一个以上的单引号

演示:通过选择每一个

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

它的工作原理:https://regex101.com/r/23aBEI/2

+0

您可能无法在Notepad ++本身中执行此操作;它使用正则表达式的一个较小的子集,并且不能对匹配进行任何处理。不过,你可以用JavaScript很容易地做到这一点。我会回答一个问题。 – Whothehellisthat

+0

@Whathehellisthat正则表达式的一个较小的子集?它使用boost库,这非常复杂。 “无法通过匹配进行任何处理”取决于您所称的处理,但它可以在引用捕获组时取代匹配。也就是说,我同意正则表达式并不是这项任务的好工具。 – Aaron

+0

@Aaron,如主题行中提到的,需要在开始和结束引号之间转义单引号。 – Anon30

回答

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', 
+0

不起作用,请检查演示链接。 – Anon30

+0

@ Anon30我已经用记事本++在你的示例中测试过它,它的工作,关心检查?你应该用'\\''替换全部。 – Aaron

+0

谢谢@Aaron,像一个魅力。你能解释一下你的正则表达式 – Anon30

0

此正则表达式匹配整个公司名称(使用+运营商的greedyness)。

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

如果原始字符串还包含了“=>‘A’”,你不想解析,您可以使用此:

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

注:您需要激活M标记,使这一工作

在组1你有你自己的公司名称

+1

OP不想提取公司名称,他想以公司名义逃脱单引号 – Aaron

+0

@Aaron哦,我误解了。如果有帮助,留在这里,但你似乎是对的。 – dquijada

1

记事本++支持PCRE(它允许我们用来看后面),并且还支持多线,我们可以使用下面的做:

Vairable回顾后:(?<!^|=>)'(?! =>|,$)

没有vairable回顾后:(?<!^)(?<!=>)'(?! =>)(?!,$)

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

+0

它目前无法编译,因为PCRE不支持可变长度lookbehind(.NET风格是少数几个做的之一)。这可以很容易地通过将你的lookbehind分成两部分来解决。我测试了'(?)'(?! => |,$)'在记事本++中,它的工作原理。 – Aaron

+0

尝试“没有变量lookbehind”版本。 – Whothehellisthat

相关问题