【发布时间】: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