2017-02-16 133 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

相關問題