在Notepad ++混淆中使用RegEx提取文本

时间:2016-02-19 14:41:03

标签: regex notepad++

所以我需要从中提取大量文本。这是一些看起来很像的小片段。

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. 

我正在使用以下RegEx来获取我想要的东西

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

然后我研究了如何提取与模式匹配的文本以及我读过的所有内容都说在Notepad ++中使用“查找和替换”并将RegEx替换为/ 1或$ 1

这对我来说没有意义,因为这只是取代了模式找到的实际文本,所以我失去了我真正想要保留的内容。我误解了我应该做的事情吗?

所以我想说我有一行

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

我使用RegEx模式进行查找并获得

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

如果我然后用

替换它
/1

然后那条线就变成了

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

感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:6)

要删除所有周围的文字并保留您需要的内容,请使用

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

并替换为\1反向引用。

我必须添加^.*(与行的开头匹配,后跟除换行符之外的零个或多个字符),然后我将您的模式包含在另一个捕获组中(在前面添加(以及之后的)以便我们可以在替换模式中使用\1反向引用引用此子匹配,然后添加.*以匹配该行的其余部分。

请注意,模式中的反向引用必须重新编号。

如果您还需要删除换行符,请在我的正则表达式结尾处添加\R?(或\R*以匹配零或更多,以删除所有空行(如果有)。

enter image description here