繁体   English   中英

正则表达式:搜索以 @ 或 @ 开头的单词

[英]Regex: searching for words that starts with @ or @

我想在 python 中创建一个正则表达式来查找以 @ 或 @ 开头的单词。

我创建了以下正则表达式,但输出在每个字符串中包含一个额外的空格,如您所见

regex = r'\s@\/?[\w\.\-]{2,}'
exp = 'george want@to play @.hdgska football @dddada'
re.findall(regex, exp)
Output: [' @.hdgska', ' @dddada']

但是,我想要的输出如下

Output: ['@.hdgska', '@dddada']

如果您能帮助我,我将不胜感激!

编辑: @第四只鸟,非常感谢您的帮助。 还有一件事我不知道如何处理。 如果我们有这个字符串

s = "george want@to play @.hdgska football @dddada@snhfbjskjs"

输出是

['@.hdgska', '@dddada']

但是,我想要的输出应该是这个

'@.hdgska'

在您的模式中,您实际上匹配的是前导\s并且在 @ 之后可以有一个可选的/\/? 但它应该可选地以点开头。

例如,您可以匹配可选的点,然后匹配字符类中允许的字符的 2 倍或更多倍。

在 @ 符号的左侧,断言非单词边界或断言空白边界。

请注意,您不必转义字符类中的点和连字符。

\B@\.?[\w.-]{2,}

正则表达式演示

另外的选择:

(?<!\S)@\.?[\w.-]{2,}

正则表达式演示

例子

import re
 
pattern = r"(?<!\S)@\.?\w+[\w.-]{2,}"
s = "george want@to play @.hdgska football @dddada"
print(re.findall(pattern, s))

输出

['@.hdgska', '@dddada']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM