[英]How do I create a regex that contains a variable and comments?
我想創建一個包含評論和變量的正則表達式。 我以為我會像這樣拆分字符串,但是不起作用:
import re
regex = re.compile(r'''
^(sm\d{5}-[a-z]+-\d{2}) # study number''' +
doctype + r'''# document
v(\d+)-(\d+) # version number
\.pdf$ # pdf extension
''', re.VERBOSE)
將您的正則表達式模式分成多個字符串,然后使用"".join()
將它們組合成一個字符串,如下所示
import re
pattern = "".join([
"^(sm\d{5}-[a-z]+-\d{2})", # study number
doctype, # document
"v(\d+)-(\d+)", # version number
"\.pdf$", # pdf extension
])
regex = re.compile(pattern, re.VERBOSE)
為了避免注釋,您可以在正則表達式的每個部分使用描述性變量名。 這樣,將行定位字符與正則表達式的“業務邏輯”分開以使這些變量更可重用也可能很有意義。
study_number_pattern = "(sm\d{5}-[a-z]+-\d{2})"
version_number_pattern = "v(\d+)-(\d+)"
pdf_extension_pattern = "\.pdf"
pattern = "".join([
"^",
study_number_pattern,
doctype,
version_number_pattern,
pdf_extension_pattern,
"$"
])
regex = re.compile(pattern, re.VERBOSE)
模式的第二行上的連接符號和右引號(''')已與注釋一起注釋掉; 只需將它們移到評論前面即可。
我將兩個加號放在一行上,但是您仍然可以將它們分成多個,這只是我的偏好...
regex = re.compile(r'''
^(sm\d{5}-[a-z]+-\d{2})''' # study number
+ doctype + # document
r'''v(\d+)-(\d+) # version number
\.pdf$ # pdf extension
''', re.VERBOSE)
在相關說明中,您是否使用IDE或任何文本編輯器來編寫代碼? 如果沒有,那將很有幫助。 這樣的錯誤會立即被發現並突出顯示。
編輯:
堆棧溢出語法高亮顯示,似乎帶有注釋“版本號”和“ pdf擴展名”的行是上面代碼中模式的一部分,但是使用re.VERBOSE標志使它們成為實際注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.