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

我想做正则表达式,如果匹配则返回布尔值。我想提取后的 @字符。这可能有很多性格。例如,我想检查电子邮件是否使用banana或apple 域。样本:


df.head()


EMAIL

data1@gmail.com

data2@yahoo.com 

data3@banana.com

data4@apple.com

apple@gmail.com

我试过这个 df["sus"] = df["email"].str.match(r'([^@]*banana|apple)') ,但它之前也捕获过 @


我得到的结果


SUS

False

False

True

True

True

我想要的结果


SUS

False

False

True

True

False


吃鸡游戏
浏览 70回答 1
1回答

缥缈止盈

您可以使用.str.contains,因为.str.match仅搜索字符串开头的匹配项(它基于re.match)。另外,[^@]*匹配除 之外的零个或多个字符@,因此如果您使用模式,它不会限制匹配banana或apple匹配(这些单词可能出现在字符串的开头、结尾、任何位置)。您可以使用df["sus"] = df["email"].str.contains(r'@(?:banana|apple)\b')请参阅正则表达式演示详情:@-@字符(?:banana|apple)banana- 匹配或者的非捕获组apple\b- 字边界
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python