我正在尝试通过抓取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