需要使用正则表达式找到2个字符串,并在它们之间插入多行文本并插入替换文本

问题描述 投票:1回答:1

我需要在一个大的html文件中多次执行正则表达式查找和替换。

要查找的第一个字符串如下:

(?-i)(<p class=.+\r\n.+)([\d]{2}/[\d]{2}/[\d]{4})(((.+\r\n)+?)(.+>))(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文件中做很多这样的查找和替换操作。

你可以给我的任何帮助将不胜感激。

regex python-2.7 replace
1个回答
1
投票

尝试使用以下模式:

(<p class=.+\n.+)([\d]{2}/[\d]{2}/[\d]{4})(?:((.+\n)+?)(.+>))(MIR)

和替代

\1\2\3\4\5\2< br />\6

示例代码:

import re
regex = r"(<p class=.+\n.+)([\d]{2}/[\d]{2}/[\d]{4})(?:((.+\n)+?)(.+>))(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

© www.soinside.com 2019 - 2024. All rights reserved.