【问题标题】:Python macro in regular expression正则表达式中的 Python 宏
【发布时间】:2013-02-14 06:58:32
【问题描述】:

在以下情况下,我使用"|" 条件匹配多个搜索模式并将所有搜索模式替换为该值。它工作得很好。但是 python 是否有任何 MACRO 类型的东西,我可以在其中编写所有模式并在搜索模式中调用它?并一次替换所有模式。因为我必须编写近 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

【问题讨论】:

  • 不确定你的意思。是否要替换搜索词列表?
  • 您是否正在寻找一种方法来预编译您的模式? (重新编译)?
  • 一般来说,你don't want to use regular expressions to parse HTML。查看实际的 HTML 解析器,例如 BeautifulSoup
  • @Mike 是的,我打算替换搜索项列表。

标签: python macros python-2.7


【解决方案1】:

Python 没有宏。

我不确定你在追求什么,但是:

可以通过编程方式构建包含正则表达式的字符串:

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

为了获得更好的性能,如果要执行多次匹配,则应编译正则表达式:

  re_pat = re.compile(re_str)

【讨论】:

  • 首先感谢您的回复。我打算用相同的值替换一组搜索模式(在上面的示例中,我已将所有搜索模式替换为“FINAL”值)。我尝试使用上面的代码,但我没有通过。
猜你喜欢
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
相关资源
最近更新 更多