需要使用正则表达式找到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个字符串,并在它们之间插入多行文本并插入替换文本的主要内容,如果未能解决你的问题,请参考以下文章