Python中的正则表达式宏

0 投票
1 回答
576 浏览
提问于 2025-04-17 15:51

在下面的例子中,我使用了"|"这个符号来匹配多个搜索模式,并把所有的搜索模式替换成一个值。这种方法效果很好。但是,Python有没有类似宏的东西,可以让我把所有的模式写在一起,然后在搜索时调用它?这样我就可以一次性替换所有的模式。因为我需要写大约20到30个搜索模式。请帮我实现这个功能。

提前谢谢你。

import re

st = '''<h5>Reglar</h5>
<h5>Lateral</h5>
<h5>Daily</h5>
<h5>Weekly</h5>
<h5>Monthly</h5>
<h5>Quaterly</h5>
<h5>Yearly</h5>
<h5>Halfyearly</h5>'''

vr = re.sub(r'(?i)<h5>(Lateral|Halfyearly|Monthly)</h5>', "<h5>FINAL</h5>", st)
print vr

1 个回答

2

Python没有宏这个概念。

我不太确定你具体想要了解什么,但:

包含正则表达式的字符串可以通过编程的方式来生成:

frequncy_str = ('Lateral', 'Daily', 'Weekly', 'Monthly')
re_str = '(?i)<h5>(' + '|'.join(frequency_str) + ')</h5>'

为了提高性能,如果要多次进行匹配,最好先编译这个正则表达式:

  re_pat = re.compile(re_str)

撰写回答