如何在文本编辑器中替换正则表达式的子字符串
How to replace a substring of a regular expression in text editor
这是我的示例字符串:
(20,'7,8,9|1|X',1,1,1,1,1),
(81,'3',1,1,1,1,10),
(83,'3',1,1,1,1,15),
我的任务是仅在以“(20,”
开头的行将“|X'”替换为“|X|X|X”
使用 www.rubular.com 我已经得到了 reg ex。 : ^(20,'.*)X'
匹配此字符串:(20,'7,8,9|1|X' 这意味着,替换命令将替换与我的 reg.Ex.
匹配的整个字符串
我不知道如何 select 只替换那个子字符串“|X'”。
我最好使用 Notepad++,如果它能够替换 reg-ex 子字符串的话。
在 "Find" 下的 Notepad++ Find/Replace window 中键入以下内容:
^(\(20,.*)(\|X)(.*\),)$
上面的正则表达式中有三个 capturing 组。第一组 (\(20,.*)
匹配 [=13= 之前的所有内容,第二组 (\|X)
是您要查找的内容,第三组 (.*\),)
是 [= 之后的所有内容13=]。比赛本身可作为变量 </code>、<code>
和 </code>,从左到右对应第一、第二和第三组比赛。</p>
<p>在 "Replace" 框中键入以下内容:</p>
<pre><code>\|X\|X\|X
这有效地仅替换了您想要的内容,同时保留了该行的其余部分。
这是一个link,您可以在其中测试正则表达式:
和 here is a link 到讨论 find/replace 在 Notepad++ 中的规范 Stack Overflow 文章。
正则表达式使用组来捕获子字符串,通常,editors/programmation 语言使用语法 $n
来使用这些组。这意味着您可以使用它并替换为:|X|X|X
re.sub(r"^(\(20,.*?)\|X(\'.*)$", r"|X|X|X", "(20,'7,8,9|1|X',1,1,1,1,1)")
您可以使用以下正则表达式替换:
^(\(20,.*?\d)\|X'
并替换为|X|X|X'
如果已经有 |X
被替换,这将不会替换它们。
正则表达式细分:
^
- 行首
(\(20,.*?\d)
- 一群....
\(20,
- 文字 (20,
.*?
- 除换行符外的 0 个或多个字符(尽可能少,*?
是惰性量词)
\d
- 一个数字
\|X'
- 文字 |X'
这是带有 Notepad++ 设置的屏幕:
在替换字符串中,我们使用 back-references 如 $&
、</code> 等(不是变量)和 <code>(...)
被称为 capturing group(不是匹配,match 是整个表达式匹配的整个文本)。可以在 regular-expressions.info.
找到更多详细信息
这是我的示例字符串:
(20,'7,8,9|1|X',1,1,1,1,1),
(81,'3',1,1,1,1,10),
(83,'3',1,1,1,1,15),
我的任务是仅在以“(20,”
开头的行将“|X'”替换为“|X|X|X”使用 www.rubular.com 我已经得到了 reg ex。 : ^(20,'.*)X' 匹配此字符串:(20,'7,8,9|1|X' 这意味着,替换命令将替换与我的 reg.Ex.
匹配的整个字符串我不知道如何 select 只替换那个子字符串“|X'”。
我最好使用 Notepad++,如果它能够替换 reg-ex 子字符串的话。
在 "Find" 下的 Notepad++ Find/Replace window 中键入以下内容:
^(\(20,.*)(\|X)(.*\),)$
上面的正则表达式中有三个 capturing 组。第一组 (\(20,.*)
匹配 [=13= 之前的所有内容,第二组 (\|X)
是您要查找的内容,第三组 (.*\),)
是 [= 之后的所有内容13=]。比赛本身可作为变量 </code>、<code>
和 </code>,从左到右对应第一、第二和第三组比赛。</p>
<p>在 "Replace" 框中键入以下内容:</p>
<pre><code>\|X\|X\|X
这有效地仅替换了您想要的内容,同时保留了该行的其余部分。
这是一个link,您可以在其中测试正则表达式:
和 here is a link 到讨论 find/replace 在 Notepad++ 中的规范 Stack Overflow 文章。
正则表达式使用组来捕获子字符串,通常,editors/programmation 语言使用语法 $n
来使用这些组。这意味着您可以使用它并替换为:|X|X|X
re.sub(r"^(\(20,.*?)\|X(\'.*)$", r"|X|X|X", "(20,'7,8,9|1|X',1,1,1,1,1)")
您可以使用以下正则表达式替换:
^(\(20,.*?\d)\|X'
并替换为|X|X|X'
如果已经有 |X
被替换,这将不会替换它们。
正则表达式细分:
^
- 行首(\(20,.*?\d)
- 一群....\(20,
- 文字(20,
.*?
- 除换行符外的 0 个或多个字符(尽可能少,*?
是惰性量词)\d
- 一个数字
\|X'
- 文字|X'
这是带有 Notepad++ 设置的屏幕:
在替换字符串中,我们使用 back-references 如 $&
、</code> 等(不是变量)和 <code>(...)
被称为 capturing group(不是匹配,match 是整个表达式匹配的整个文本)。可以在 regular-expressions.info.