Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在正则表达式上使用re.VERBOSE_Python_Regex - Fatal编程技术网

Python 在正则表达式上使用re.VERBOSE

Python 在正则表达式上使用re.VERBOSE,python,regex,Python,Regex,我将如何使用以下正则表达式: re.compile(r'(\'?(("(\"|[^"])*")|^#.*\n|;.*\n|\(|\)|-?[0-9]+(\.[0-9]+)?|[a-zA-Z-#][a-zA-Z0-9.+-/\!]*))|\'.*') 然后把它写在多行上 无论出于何种原因,我尝试使用re.VERBOSE似乎改变了表达式的值 如果将两个字符串放在一起,它们之间只有空格,那么python解释器将把它们连接起来 re.compile(r'(\'?(("(\"|[^"])")|^#.\n

我将如何使用以下正则表达式:

re.compile(r'(\'?(("(\"|[^"])*")|^#.*\n|;.*\n|\(|\)|-?[0-9]+(\.[0-9]+)?|[a-zA-Z-#][a-zA-Z0-9.+-/\!]*))|\'.*')
然后把它写在多行上


无论出于何种原因,我尝试使用
re.VERBOSE
似乎改变了表达式的值

如果将两个字符串放在一起,它们之间只有空格,那么python解释器将把它们连接起来

re.compile(r'(\'?(("(\"|[^"])")|^#.\n|;.\n|(|)|-?[0-9]+(.[0-9]+)?|'
           r'[a-zA-Z-#][a-zA-Z0-9.+-/!]))|\'.*')

将正则表达式转换为
re.VERBOSE
模式时,请确保:

  • 空格被转义或替换为一些等价的:
    \s
    []
    '\'\'
    (由于格式太过复杂,我不得不在这里加上
    '
    )。 使用
    re.VERBOSE
    忽略所有纯空白
  • 散列
    \
    的转义或替换方式相同:
    \\
    等。 散列作为注释方式使用
    re.VERBOSE
然后可以使用python的多行字符串重写正则表达式:

import re
re.compile(r'''
    (\'?(("(\"|[^"])*")
         |^\#.*\n
         |;.*\n
         |\(
         |\)
         |-?[0-9]+(\.[0-9]+)?
         |[a-zA-Z-#][a-zA-Z0-9.+-/\!]*
        )
    )
    |\'.*
    ''', re.VERBOSE)

你应该标记你正在使用的语言啊!我的英雄!我的Python不稳定,但我之前也有同样的想法。不管出于什么原因,它都不起作用(可能是打字错误)。既然是你建议的,我想我会再试一次,但没用。但在那一点上,我很有信心它会起作用,所以我第三次尝试了同样的方法,结果成功了。我想这只是为了说明疲劳编码是糟糕的编码。