我想创建一个包含注释和变量的正则表达式。我以为我会像这样拆分字符串,但它不起作用:
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)
关于python - 如何创建包含变量和注释的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55426896/