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 演示。
如果您对 regex
以外的解决方案持开放态度,那么您可以使用 filter
和 lambda
函数来获得所需的结果。
a = 'this is a tweet #hashtag @mention'
" ".join(filter(lambda x:x[0]!='#' and x[0]!='@' , a.split()))
'this is a tweet'
我想获取不是提及(以@开头)或主题标签(以#开头)的推文中的词语。
我的代码是这样的:
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 演示。
如果您对 regex
以外的解决方案持开放态度,那么您可以使用 filter
和 lambda
函数来获得所需的结果。
a = 'this is a tweet #hashtag @mention'
" ".join(filter(lambda x:x[0]!='#' and x[0]!='@' , a.split()))
'this is a tweet'