我正在尝试编写一个解析器,使用正则表达式来检测参考书目脚注。但是一个特定的RE不工作,我不知道为什么。下面是我隔离问题的代码。
import re
PATTERN = "[\\w ]+, [\\w ]+, (\\d+(\\-\\d+)?)\\."
match_A = re.search(PATTERN, "Author, Some Book, 51–66.")
match_B = re.search(PATTERN, "Author, Some Book, 60-61.")
print(match_A != None)
print(match_B != None)
SUB_PATTERN = "\\d+(\\-\\d+)?"
match_C = re.search(SUB_PATTERN, "51–66")
match_D = re.search(SUB_PATTERN, "60–61")
print(match_C != None)
print(match_D != None)
结果是:
False
True
True
True
但是我期望获得所有的True
。谁能重现这个问题,或者解释一下我身上发生了什么?
我正在Windows 10上工作。我的Python版本:
Python 3.11.1 (tags/v3.11.1:a7a450f, Dec 6 2022, 19:58:39) [MSC v.1934 64 bit (AMD64)] on win32
1条答案
按热度按时间gzszwxb41#
你的破折号是不同的,第一个是“-”(“en破折号”),第二个是“-”(“连字符”)。如果你不相信我,谷歌每一个。你可以把他们放在一个字符类: