簡體   English   中英

具有變量替換的 Python 正則表達式

[英]Python Regex with variable substitution

我正在嘗試生成一個正則表達式,其中包含帶有數字出現次數的數字搜索。 但是,正則表達式還包含幾個其他變量,需要替換這些變量才能獲得最終的正則表達式字符串。 稍后我將在模式匹配中使用這個正則表達式字符串(在變量替換之后)。

所需的最終正則表達式字符串是: 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} (出現次數),以便以后可以將此字符串用作正則表達式。

很高興提供更多信息。

謝謝。

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

import re

PRCS = "CUST"
BATCH = "X012"

pattern = r"DWH_%s_%s_\d{8}_\d{6}\.xml" % (PRCS, BATCH)
example_string = """
DWH_CUST_X012_01234567_012345.xml
DWH_CUST_X012_0123abcd_0123.xml
"""
matches = re.findall(pattern, example_string)
print(matches)
# ['DWH_CUST_X012_01234567_012345.xml']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM