在Python代码中,我曾经re.compile()检查给定的单词是否存在。PATTERNS = { re.compile(r'[\w\s] + total+ [\w\s] + cases'): data.get_total_cases, re.compile(r'[\w\s] + total cases'): data.get_total_cases, re.compile(r'[\w\s] + total + [\w\s] + deaths'): data.get_total_deaths, re.compile(r'[\w\s] + total deaths'): data.get_total_deaths}这没有按预期工作。我找不到任何问题。最后,我删除了每个字符集后面的空格[\w\s],因为这是我的代码和我引用的原始代码之间唯一可见的区别。PATTERNS = { re.compile(r'[\w\s]+ total+ [\w\s]+ cases'): data.get_total_cases, re.compile(r'[\w\s]+ total cases'): data.get_total_cases, re.compile(r'[\w\s]+ total+ [\w\s]+ deaths'): data.get_total_deaths, re.compile(r'[\w\s]+ total deaths'): data.get_total_deaths}现在代码正在运行,并且可以成功识别所有模式。但我仍然找不到为什么这些空间会导致这个问题?
1 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
正则表达式中的符号+
表示“一个或多个”。
So +
表示“一个或多个
(空格)。And[\w\s]+
表示“一个或多个任何字母数字或空白字符”。
如果您想匹配类似于10 total + 10 cases
a 的模式+
作为文字,则需要转义该+
符号。原始字符串(r
在字符串之前)允许在字符串中使用文字反斜杠,可用于在正则表达式模式中进行转义。
re.compile(r"[\w\s]+ total \+ [\w\s]+ cases")
请注意,它\+
的意思是“字面上的+号”而不是“一个或多个”。
添加回答
举报
0/150
提交
取消