我正在尝试通过抓取PDF来学习正则表达式,并且在将第二个管道(|)运算符放入匹配对象时,似乎遇到了问题。

我尝试阅读网络上的各个地方,但似乎找不到任何东西。我正在尝试仅在下面的代码中检索文本Base Attack/Grapple: +1/–3

import re
regex = re.compile(r"Base\s+Attack/Grapple:\s+(\+|-)\d+/(\+|-)\d+")
match_object = regex.search("flat-footed 14  Base Attack/Grapple:  +1/–3Attack:  Morningstar +2 melee (1d6)")
match_object.group()

运行代码时,出现错误消息AttributeError: 'NoneType' object has no attribute 'group'

当我将正则表达式的表达式缩短为r"Base\s+Attack/Grapple:\s+(\+|-)\d+/"时,它将返回"Base Attack/Grapple: +1/"。因此,使用第二个管道运算符似乎有些问题。

最佳答案

flat-footed 14  Base Attack/Grapple:  +1/–3Attack:  Morningstar +2 melee (1d6)"
                                         |___ ( an em dash )

您要匹配的文本中有一个 em Dash(–) ,但是您的正则表达式正在寻找 - hyphen ,因此您需要匹配– (em dash)
Base\s+Attack/Grapple:\s+(\+|-)\d+/(\+|–)\d+

Regex Demo

10-07 13:29