gpt4 book ai didi

Python正则表达式排除电子邮件模式但包含@string模式

转载 作者:行者123 更新时间:2023-12-01 00:39:16 25 4
gpt4 key购买 nike

假设我有以下字符串:

string = "Hello, please send message to @david, @nick, @jack, but do not send message to any email address like json1234@google.com or nelson.tan@yahoo.com, thanks!"
matches = re.findall("\@\w+", string)
print(macthes)

#return ['@david', '@nick', '@jack', '@google', '@yahoo']

但是,我只想返回['@david', '@nick', '@jack']

如何排除电子邮件地址的模式,以便它只返回使用 @ 的名称标签。谢谢。

最佳答案

由于电子邮件在 @ 之前包含一个单词 char您可以使用\B :

r'\B@\w+'

\B here 匹配字符串的开头或者 @ 之前有非单词字符(除 _ 或空格之外的标点符号)。请参阅regex demo .

如果您知道需要提取的字符串位于空格/字符串开头之后

r'(?<!\S)@\w+'

(?<!\S)如果当前位置左侧没有空格,则负向先行匹配失败。因此,@\w+仅匹配字符串的开头或空格之后。请参阅this regex demo .

Python demo :

import re    
s = 'Hello, please send message to @david, @nick, @jack, but do not send message to any email address like json1234@google.com or nelson.tan@yahoo.com, thanks!'
print( re.findall(r'\B@\w+', s) )
# => ['@david', '@nick', '@jack']
print( re.findall(r'(?<!\S)@\w+', s) )
# => ['@david', '@nick', '@jack']

关于Python正则表达式排除电子邮件模式但包含@string模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57493370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com