【问题标题】:Python Regex Error : nothing to repeat at position 0Python 正则表达式错误:在位置 0 没有可重复的内容
【发布时间】:2017-09-07 19:27:49
【问题描述】:

我正在尝试匹配可以从普通英文键盘输入的字符串。

因此,它应该包括字母、数字和我们键盘上出现的所有符号。

Corresponding regex : "[a-zA-Z0-9\t ./,<>?;:\"'`!@#$%^&*()\[\]{}_+=|\\-]+"

我在regexr.com 上验证了这个正则表达式。

在 python 中,匹配时出现以下错误:

>>> a=re.match("+how to block a website in edge",pattern)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\tf_1.2\lib\re.py", line 163, in match
    return _compile(pattern, flags).match(string)
  File "C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\tf_1.2\lib\re.py", line 293, in _compile
    p = sre_compile.compile(pattern, flags)
  File "C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\tf_1.2\lib\sre_compile.py", line 536, in compile
    p = sre_parse.parse(p, flags)
  File "C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\tf_1.2\lib\sre_parse.py", line 829, in parse
    p = _parse_sub(source, pattern, 0)
  File "C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\tf_1.2\lib\sre_parse.py", line 437, in _parse_sub
    itemsappend(_parse(source, state, nested + 1))
  File "C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\tf_1.2\lib\sre_parse.py", line 638, in _parse
    source.tell() - here + len(this))
sre_constants.error: nothing to repeat at position 0

【问题讨论】:

  • 请注意,您的模式可以缩短为 [ -}\t]+(请参阅 ascii 表)。除非有特殊要求,~\n这两个字符缺失,可以这样添加:[ -~\t\n]+

标签: python regex python-3.x


【解决方案1】:

此错误消息与参数的位置无关。是的,在上面的问题中,它们的顺序不正确,但这只是问题的一半。

我曾经遇到过这样的问题:

re.search('**myword', '/path/to/**myword') 

我想自动获得'**',所以我不想在某处手动写'\'。为此,有 re.escape() 函数。这是正确的代码:

re.search(re.escape('**myword'), '/path/to/**myword')

这里的问题是特殊字符放在行首之后。

【讨论】:

  • 我不确定,这是答案还是问题? (只是问)
  • 这是一个答案。第一条评论也是一个答案。但是第一个是关于参数位置(实际上是错误的)和我对错误消息的实际含义的回答。
【解决方案2】:

您对re.match 的论点倒退:应该是

re.match(pattern, "+how to block a website in edge")

【讨论】:

  • 量词 + 作为第一个字符导致正则表达式引擎抱怨 在位置 0 没有重复的内容 并且可怜的 python 受到指责:)
猜你喜欢
  • 1970-01-01
  • 2017-08-27
  • 2016-04-15
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
相关资源
最近更新 更多