这是我的示例字符串:
{{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 ++。
答案 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"
}]
这有效地取代了你想要的东西,同时保留了剩下的部分。
这是一个可以测试正则表达式的链接:
和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 ++设置的屏幕:
在替换字符串中,我们使用 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)")