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

特定字符后的多个正则表达式条件

特定字符后的多个正则表达式条件

吃鸡游戏 2023-09-26 16:24:19
我想做正则表达式,如果匹配则返回布尔值。我想提取后的 @字符。这可能有很多性格。例如,我想检查电子邮件是否使用banana或apple 域。样本:df.head()EMAILdata1@gmail.comdata2@yahoo.com data3@banana.comdata4@apple.comapple@gmail.com我试过这个 df["sus"] = df["email"].str.match(r'([^@]*banana|apple)') ,但它之前也捕获过 @我得到的结果SUSFalseFalseTrueTrueTrue我想要的结果SUSFalseFalseTrueTrueFalse
查看完整描述

1 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您可以使用.str.contains,因为.str.match仅搜索字符串开头的匹配项(它基于re.match)。另外,[^@]*匹配除 之外的零个或多个字符@,因此如果您使用模式,它不会限制匹配bananaapple匹配(这些单词可能出现在字符串的开头、结尾、任何位置)。

您可以使用

df["sus"] = df["email"].str.contains(r'@(?:banana|apple)\b')

请参阅正则表达式演示

详情

  • @-@字符

  • (?:banana|apple)banana- 匹配或者的非捕获组apple

  • \b- 字边界


查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

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