如何在文本编辑器中替换正则表达式的子字符串

时间:2015-10-23 07:45:10

标签: regex string replace notepad++ text-editor

这是我的示例字符串:

{{1}}

我的任务是更换" | X'"与" | X | X | X"只有行以#34;(20,"

开头)

使用www.rubular.com我已经获得了reg ex。 :^(20,'。*)X' 匹配此字符串:(20,' 7,8,9 | 1 | X'这意味着,替换命令将替换匹配我的reg的整个字符串。例如。

我无法弄清楚如何选择那个子串" | X'"并只替换它。

如果能够替换reg-ex子串,我最好使用Notepad ++。

4 个答案:

答案 0 :(得分:2)

在“查找”下的“记事本++查找/替换”窗口中键入以下内容:

^(\(20,.*)(\|X)(.*\),)$

上述正则表达式中有三个捕获组。第一组(\(20,.*)匹配|X之前的所有内容,第二组(\|X)是您要查找的内容,第三组(.*\),)|X之后的所有内容$1 1}}。匹配本身可用作变量$2$3$1\|X\|X\|X$3 ,对应于从左到右的第一,第二和第三组匹配。

在“替换”框中键入以下内容:

x=[{
    "value": 1.37,
    "date_transacted": "2015-01-01"
},
{
    "value": 1.62,
    "date_transacted": "2015-02-01"
},
{
    "value": 1.83,
    "date_transacted": "2015-03-01"
}]

这有效地取代了你想要的东西,同时保留了剩下的部分。

这是一个可以测试正则表达式的链接:

Regex101

here is a link到规范的Stack Overflow文章讨论在Notepad ++中查找/替换。

答案 1 :(得分:1)

您可以使用以下正则表达式替换:

^(\(20,.*?\d)\|X'

并替换为$1|X|X|X'

如果已经替换了|X,则不会替换它们。

正则表达式细分:

  • ^ - 行首
  • (\(20,.*?\d) - 一群......
    • \(20, - 文字(20,
    • .*? - 除换行符以外的0个或多个字符(尽可能少,*?是一个惰性量词)
    • \d - 数字
  • \|X' - 文字|X'

这是一个带有Notepad ++设置的屏幕:

enter image description here

在替换字符串中,我们使用 back-references ,如$&$1等(不是变量),并调用(...)中的模式捕获组(不匹配,匹配是整个表达式匹配的整个文本)。有关详细信息,请访问regular-expressions.info

答案 2 :(得分:0)

正则表达式使用组来捕获子字符串,通常,编辑器/编程语言使用语法$n来使用这些组。这意味着您可以使用它并替换为:$1|X|X|X

答案 3 :(得分:-1)

re.sub(r"^(\(20,.*?)\|X(\'.*)$", r"\1|X|X|X\2", "(20,'7,8,9|1|X',1,1,1,1,1)")