Python: How do I do line continuation with a long regex?
本问题已经有最佳答案,请猛点这里访问。
我有一个很长的regex,我想继续下一行,但我所做的一切都给了我一个eol或打破regex。我已经在括号中继续了这行一次,并且已经阅读了这篇文章,除了其他内容之外,我如何在Python中执行换行(换行)操作?
工作,但时间仍然太长:
1 2 | REGEX = re.compile( r'\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)') |
错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | REGEX = re.compile( r'\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\)[A-Z0-9]+ )\s+([a-zA-Z\d-]+)') SyntaxError: EOL while scanning string literal REGEX = re.compile( r'\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\ )[A-Z0-9]+)\s+([a-zA-Z\d-]+)') sre_constants.error: unbalanced parenthesis REGEX = re.compile( r'\d\s+\d+\s+([A-Z0-9-]+)\s+( \ [0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)') regex no longer works REGEX = (re.compile( r'\d\s+\d+\s+([A-Z0-9-]+)\s+( [0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)')) SyntaxError: EOL while scanning string literal |
我已经能够缩短我的regex,这样这就不再是一个问题了,但我现在有兴趣知道如何用一个长的regex进行行继续?
如果使用
1 2 3 4 5 6 7 8 | pattern = r""" \d\s+ \d+\s+ ([A-Z0-9-]+)\s+ ([0-9]+.\d\(\d\)[A-Z0-9]+)\s+ ([a-zA-Z\d-]+)""" REGEX = re.compile(pattern, re.VERBOSE) |
这种方法在优秀的"深入到Python"一书中进行了解释。请参见"详细正则表达式"。
可以在多行中使用多个字符串,在发送到
1 2 | REGEX = re.compile(r"\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\)" r"[A-Z0-9]+)\s+([a-zA-Z\d-]+)") |
尝试:
1 2 3 4 | regex = re.compile( r'\d\s+\d+\s+([A-Z0-9-]+)\s+(' r'[0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)' ) |