python - 如何使用长正则表达式进行续行?

标签 python regex

<分区>

我有一个很长的正则表达式,我想继续到下一行,但我尝试过的所有操作都给了我 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

我已经能够缩短我的正则表达式,所以这不再是一个问题,但我现在想知道如何使用长正则表达式进行行延续?

最佳答案

如果您使用 re.VERBOSE 标志,您可以根据需要拆分正则表达式以使其更具可读性:

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)

这种方法在优秀的“Dive Into Python”一书中进行了解释。
请参阅“详细正则表达式”。

关于python - 如何使用长正则表达式进行续行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33211404/

相关文章:

python - numpy/scipy 从加权边缘列表构建邻接矩阵

python 3 : Is the method I'm using to count the results of combination too slow?

c# - 使用 xsd 模式将 xml 数据中的黑名单字符

javascript - 如何在 JavaScript 中匹配整个单词?

php - 正则表达式匹配大写或小写的查询字符串

python - 在pandas中返回 float 而不是ndarray - python

python - 将嵌入式 python asyncio 集成到 boost::asio 事件循环中

python - Twisted - SleekXMPP 兼容性

Python:正则表达式无法正常工作

c# - 如何使用正则表达式强制执行单行?