[英]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.