为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

紫衣仙女 2024-01-04 10:17:02
在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 casesa 的模式+作为文字,则需要转义该+符号。原始字符串(r在字符串之前)允许在字符串中使用文字反斜杠,可用于在正则表达式模式中进行转义。

re.compile(r"[\w\s]+ total \+ [\w\s]+ cases")

请注意,它\+的意思是“字面上的+号”而不是“一个或多个”。


查看完整回答
反对 回复 2024-01-04
  • 1 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信