【问题标题】:Python Regex with variable substitution具有变量替换的 Python 正则表达式
【发布时间】:2022-07-08 09:06:30
【问题描述】:

我正在尝试生成一个正则表达式,其中包含带有数字出现次数的数字搜索。但是,正则表达式还包含几个其他变量,需要替换这些变量才能获得最终的正则表达式字符串。稍后我将在模式匹配中使用这个正则表达式字符串(在变量替换之后)。

必需的最终正则表达式字符串是:r"DWH_CUST_X012_\d{8}_\d{6}\.xml"

我尝试了什么:

PRCS = "CUST"
BATCH = "X012"
pattern = rf"DWH_{PRCS}_{BATCH}_\d{8}_\d{6}\.xml"
    
regex = re.compile(pattern)

不幸的是,这是将字符串中存在的 {8} 和 {6} 视为替换的候选者,因此会引发错误。

必需的最终正则表达式字符串是:r"DWH_CUST_X012_\d{8}_\d{6}\.xml"

如何替换 {PRCS} 和 {BATCH_ID} 变量的值而不干扰正则表达式字符串中的 {8}{6}(出现次数),以便我可以稍后将此字符串用作正则表达式。

很高兴提供更多信息。

谢谢。

【问题讨论】:

  • 为什么不先做pattern_prefix = f"DWH_{PRCS}_{BATCH}"pattern_suffix = r"_\d{8}_\d{6}\.xml",然后再做pattern = pattern_prefix + pattern_suffix
  • 你可以用另一个转义花括号:rf"DWH_{PRCS}_{BATCH}_\d{{8}}_\d{{6}}\.xml"

标签: python python-3.x python-regex


【解决方案1】:

您可以使用旧的 C 样式字符串格式:

r"DWH_%s_%s_\d{8}_\d{6}\.xml" % (PRCS, BATCH)

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 2011-03-12
    • 1970-01-01
    相关资源
    最近更新 更多