我试图从字符串中获取完整的单词或主题标签,似乎我正在应用“可选字符”#39; ?在正则表达式中标记错误。
这是我的代码:
print re.findall(r'(#)?\w*', text)
print re.findall(r'[#]?\w*', text)
因此'这是一句话,谈论这个,#this,#that,#etc'
应该返回'这个'和'#this'
然而,它似乎正在返回一个包含空字符串以及其他随机内容的列表。
正则表达式有什么问题?
编辑:
我试图获取整个垃圾邮件的话,我似乎把自己混淆了......
s = 'spamword'
print re.findall(r'(#)?'+s, text)
我需要匹配整个单词,而不是单词部分......
答案 0 :(得分:1)
您可以在正则表达式中使用单词边界:
s = 'spamword'
re.findall(r'#?' + s + r'\b', text)
答案 1 :(得分:0)
以上答案真正解释了为什么,这是一段应该有用的代码。
>>>re.findall(r'#?\w+\b')