需要使用正则表达式找到2个字符串,并在它们之间插入多行文本并插入替换文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要使用正则表达式找到2个字符串,并在它们之间插入多行文本并插入替换文本相关的知识,希望对你有一定的参考价值。
我需要在一个大的html文件中多次执行正则表达式查找和替换。
要查找的第一个字符串如下:
(?-i)(<p class=.+
.+)([d]{2}/[d]{2}/[d]{4})(((.+
)+?)(.+>))(MIR)
要查找的第二个字符串是下一个出现的:
“Times New Roman”'> MIR
我的目标是将日期组([ d] {2} / [ d] {2} / [ d] {4})插入第二个字符串,就在“MIR”之前
我尝试这样做是不成功的。
我想出的搜索字符串是这样的:
(?-i)()(MIR)((。+ r n)+?)((。+)?>)(MIR)
我想出的替换字符串是这样的:
1 2 3 7 8 10 2 / 12
这是行不通的。
我需要在html文件中做很多这样的查找和替换操作。
你可以给我的任何帮助将不胜感激。
渣
答案
尝试使用以下模式:
(<p class=.+
.+)([d]{2}/[d]{2}/[d]{4})(?:((.+
)+?)(.+>))(MIR)
和替代
123452< br />6
示例代码:
import re
regex = r"(<p class=.+
.+)([d]{2}/[d]{2}/[d]{4})(?:((.+
)+?)(.+>))(MIR)"
subst = "\1\2\3\4\5\2< br />\6"
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0)
if result:
print (result)
在线demo。
以上是关于需要使用正则表达式找到2个字符串,并在它们之间插入多行文本并插入替换文本的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Atom 中使用正则表达式在文本字符串中插入符号(Mac OS)