在 Notepad++ 混淆中使用 RegEx 提取文本
Extracting text with RegEx in Notepad++ confusion
所以我有大量文本需要从中提取一些文本。这是其中一些内容的一小段。
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 来获得我想要的结果
(["'])(?:(?=(\?)).)*?
然后我研究了如何提取与模式匹配的文本,我读过的所有内容都说过在 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.
感谢任何帮助,谢谢
要删除周围的所有文字并只保留您需要的内容,请使用
^.*((["'])(?:(?!\2).)*?).*
并替换为 </code> 反向引用。见 <a href="https://regex101.com/r/wHGyPo/1/" rel="nofollow noreferrer">regex demo</a>.</p>
<p><em>详情</em>:</p>
<ul>
<li><code>^
- 字符串开头
.*
- 零个或多个字符,换行字符除外,尽可能多
((["'])(?:(?!\2).)*?)
- 第 1 组:将 "
或 '
捕获到第 1 组,然后除换行符之外的任何零个或多个(但尽可能少)字符,每个都不能等于第 2 组中捕获的值(因此,“不是 '
”或“不是 "
”)
.*
- 该行的其余部分。
我必须添加 ^.*
(匹配行的开头后跟除换行符以外的零个或多个字符),然后我将您的模式包含在另一个捕获组中(添加 (
在前面和 )
之后)以便我们稍后可以在替换模式中使用 </code> 反向引用引用此子匹配,然后添加 <code>.*
以匹配该行的其余部分。
请注意,您的模式中的反向引用必须重新编号。
如果您还需要删除换行符,请在我的正则表达式末尾添加 \R?
(或 \R*
以匹配零个或多个,删除所有空行)。
所以我有大量文本需要从中提取一些文本。这是其中一些内容的一小段。
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 来获得我想要的结果
(["'])(?:(?=(\?)).)*?
然后我研究了如何提取与模式匹配的文本,我读过的所有内容都说过在 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.
感谢任何帮助,谢谢
要删除周围的所有文字并只保留您需要的内容,请使用
^.*((["'])(?:(?!\2).)*?).*
并替换为 </code> 反向引用。见 <a href="https://regex101.com/r/wHGyPo/1/" rel="nofollow noreferrer">regex demo</a>.</p>
<p><em>详情</em>:</p>
<ul>
<li><code>^
- 字符串开头
.*
- 零个或多个字符,换行字符除外,尽可能多((["'])(?:(?!\2).)*?)
- 第 1 组:将 "
或 '
捕获到第 1 组,然后除换行符之外的任何零个或多个(但尽可能少)字符,每个都不能等于第 2 组中捕获的值(因此,“不是 '
”或“不是 "
”).*
- 该行的其余部分。我必须添加 ^.*
(匹配行的开头后跟除换行符以外的零个或多个字符),然后我将您的模式包含在另一个捕获组中(添加 (
在前面和 )
之后)以便我们稍后可以在替换模式中使用 </code> 反向引用引用此子匹配,然后添加 <code>.*
以匹配该行的其余部分。
请注意,您的模式中的反向引用必须重新编号。
如果您还需要删除换行符,请在我的正则表达式末尾添加 \R?
(或 \R*
以匹配零个或多个,删除所有空行)。