Python 正则表达式获取推文中所有不​​是@mention 或#hashtag 的词

Python regex to get all the words in a tweet that are not @mention or #hashtag

我想获取不是提及(以@开头)或主题标签(以#开头)的推文中的词语。

我的代码是这样的:

import re
pattern=r'(?u)\b\w\w+\b'
pattern=re.compile(pattern)
pattern.findall('this is a tweet #hashtag @mention')

这个正则表达式的结果是 这是推文主题标签提及

但我不希望结果中出现 话题标签 提及 。 我希望结果是:

这是推文

请注意,我不能使用空格代替 \b,因为 .这是一条推文(注意开头的.) 也应该是 [这是一条推文] \b 强制单词的开头是任何非字母数字但如果我使用 \s 那么 this 将不会出现在结果中。

(?<![#@])\b\w+\b

您可以使用 this.See 演示。

https://regex101.com/r/KzHvuy/2

如果您对 regex 以外的解决方案持开放态度,那么您可以使用 filterlambda 函数来获得所需的结果。

a = 'this is a tweet #hashtag @mention'
" ".join(filter(lambda x:x[0]!='#' and x[0]!='@' , a.split()))

'this is a tweet'