2016-02-19 42 views
1

所以我有一大段文本需要從中提取一些文本。這是其中一些看起來像的小片段。在Notepad ++混淆中用RegEx提取文本

pool-4-thread-54]"Sheet1 :name=Wagenaar, Larry CSA Term (4-15-13ALT).doc; " :Error adding or updating document. 
pool-4-thread-56]"Sheet1 :name=Kelly Services - 2nd Amendment to CLSA (11-13-13ALT).doc; " :Error adding or updating document. 
pool-4-thread-38]"Sheet1 :name=New Zealand Pharmaceuticals CDA 072313.doc; " :Error adding or updating document. 

我使用下面的正則表達式來得到我想要離開它什麼

(["'])(?:(?=(\\?))\2.)*?\1 

然後我看着如何提取,本人已閱讀說的是使用模式,一切都匹配的文本在Notepad ++中查找和替換,並用/ 1或$ 1替換正則表達式,以替換正確的文本模式找到,所以我失去了我真正想要保留的東西。我誤解了我應該做的事情嗎?

所以可以說我有行

pool-4-thread-54]"Sheet1 :name=Wagenaar, Larry CSA Term (4-15-13ALT).doc; " :Error adding or updating document. 

我做一個發現使用正則表達式,並得到

"Sheet1 :name=Wagenaar, Larry CSA Term (4-15-13ALT).doc; " 

的結果,如果我再替換成

/1 

那麼那條線就變成了

pool-4-thread-54] :Error adding or updating document. 

任何幫助表示讚賞,感謝

+0

不好意思,但你的目標是什麼?要刪除所有周圍的文本,並保持你所需要的?試試'^。*((['''])(?:(?=(\\?))\ 3。)*?\ 2)。*' - >'\ 1' –

+0

。非常感謝你 – TonyO

回答

5

要刪除所有周圍的文本,讓你需要的東西,用

^.*((["'])(?:(?=(\\?))\3.)*?\2).* 

而且隨着\1後向引用替換。

我不得不添加^.*(該行的開始,隨後以比換行符以外的零個或多個字符相匹配),那麼我封閉的模式到另一個捕獲組(加(在前面和)後),以便我們可以在替換模式中使用\1反向引用稍後參考此子匹配,然後添加.*以匹配該行的其餘部分。

請注意,您的模式中的反向引用必須重新編號。

如果您還需要刪除換行符,請在我的正則表達式結尾處添加\R?(或\R*以匹配零個或多個,以刪除所有空行,如果有的話)。

enter image description here

+1

這是正確的答案,對我來說非常合適,謝謝! – TonyO