首页 > 解决方案 > 常用表达

问题描述

嗨,有谁知道为什么这段代码返回“否”而另一个返回“是”?

import re
b="@gmail.com"
x=re.findall(r"\Bgmail",b)
if x:
    print("Yes")
else:
    print("No")  # <<<



import re
b="agmail.com"
x=re.findall(r"\Bgmail",b)
if x:
    print("Yes") # <<<
else:
    print("No")

标签: python

解决方案


作为\b字边界,\B是相反的


您的正则表达式"\Bgmail"要求:

  • gmail单词
  • 前面没有单词边界
@gmail.com
^^ 这两个字符之间有一个单词边界,所以正则表达式不匹配

agmail.com
^^ 这两个字符之间没有单词边界,所以正则表达式匹配

Regex Demo

Word boundaries doc


推荐阅读