【发布时间】:2016-01-17 14:56:08
【问题描述】:
我有一个很长的正则表达式,我想继续到下一行,但我尝试过的所有操作都会给我一个 EOL 或破坏正则表达式。我已经在括号内续写了一次,并阅读了How can I do a line break (line continuation)? 等内容。
工作,但仍然太长:
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 = 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
我已经能够缩短我的正则表达式,因此这不再是一个问题,但我现在很想知道如何使用长正则表达式进行行延续?
【问题讨论】:
-
您的搜索查询的问题在于您认为这是继续一行,而您找到的答案是关于“继续一个逻辑行”,这是不是你需要的。获得所需答案的术语是“继续多行 string。”
-
我想我认为正则表达式与常规 Python 字符串不同。尽管
re.VERBOSE答案是特定于正则表达式的,而不是使正则表达式成为多行字符串。 -
正则表达式和您通常使用的字符串之间的唯一区别是
r表示原始字符串。它只是为了方便。您可以将r与不用作正则表达式的字符串一起使用(例如r'C:\Users'),并且您可以在没有r的情况下创建正则表达式字符串(例如'[0-9]{3}-[0-9]{3}-[0-9]{4}')。