我想做正則表達(dá)式,如果匹配則返回布爾值。我想提取后的 @字符。這可能有很多性格。例如,我想檢查電子郵件是否使用banana或apple 域。樣本:df.head()EMAILdata1@gmail.comdata2@yahoo.com data3@banana.comdata4@apple.comapple@gmail.com我試過(guò)這個(gè) df["sus"] = df["email"].str.match(r'([^@]*banana|apple)') ,但它之前也捕獲過(guò) @我得到的結(jié)果SUSFalseFalseTrueTrueTrue我想要的結(jié)果SUSFalseFalseTrueTrueFalse
1 回答

縹緲止盈
TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用.str.contains
,因?yàn)?code>.str.match僅搜索字符串開(kāi)頭的匹配項(xiàng)(它基于re.match
)。另外,[^@]*
匹配除 之外的零個(gè)或多個(gè)字符@
,因此如果您使用模式,它不會(huì)限制匹配banana
或apple
匹配(這些單詞可能出現(xiàn)在字符串的開(kāi)頭、結(jié)尾、任何位置)。
您可以使用
df["sus"] = df["email"].str.contains(r'@(?:banana|apple)\b')
請(qǐng)參閱正則表達(dá)式演示
詳情:
@
-@
字符(?:banana|apple)
banana
- 匹配或者的非捕獲組apple
\b
- 字邊界
添加回答
舉報(bào)
0/150
提交
取消