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

时间:2017-02-23 04:08:59

标签: python regex regex-lookarounds

我希望得到一条不提及的推文(以@开头)或主题标签(以#开头)。

我的代码就像:

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

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

但我不希望结果中包含主题标签提及。 我希望结果是:

这是推文

请注意,我不能使用空格而不是\ b,因为输出为 。这是推文(注意开头的。) 也应该是 [this,is,a,tweet] \ b强制单词的开头为任何非字母数字,但如果我使用\ s,则不会出现在结果中。

2 个答案:

答案 0 :(得分:1)

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

你可以使用它。参见演示。

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

答案 1 :(得分:0)

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

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

&#39;这是推文&#39;