为什么正则表达式中相对于“+”的空格会导致问题?

在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

}

现在代码正在运行,并且可以成功识别所有模式。但我仍然找不到为什么这些空间会导致这个问题?


紫衣仙女
浏览 118回答 1
1回答

ABOUTYOU

正则表达式中的符号+表示“一个或多个”。So +表示“一个或多个 (空格)。And[\w\s]+表示“一个或多个任何字母数字或空白字符”。如果您想匹配类似于10 total + 10 casesa 的模式+作为文字,则需要转义该+符号。原始字符串(r在字符串之前)允许在字符串中使用文字反斜杠,可用于在正则表达式模式中进行转义。re.compile(r"[\w\s]+ total \+ [\w\s]+ cases")请注意,它\+的意思是“字面上的+号”而不是“一个或多个”。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python