我正在尝试从字符串中获取完整的单词或主题标签,似乎我正在应用“可选字符”?正则表达式中的标记错误。
这是我的代码:
print re.findall(r'(#)?\w*', text)
print re.findall(r'[#]?\w*', text)
因此“这是一个谈论这个、#this、#that、#etc 的句子”
应该返回“this”和“#this”的匹配项
但它似乎返回一个包含空字符串以及其他随机内容的列表。
正则表达式有什么问题?
编辑:
我正在尝试获取完整的垃圾邮件单词,但我似乎把自己搞乱了......
s = 'spamword'
print re.findall(r'(#)?'+s, text)
我需要匹配整个单词,而不是单词的一部分...
最佳答案
您可以在正则表达式中使用单词边界:
s = 'spamword'
re.findall(r'#?' + s + r'\b', text)
关于python - 匹配可选的 '#' 似乎无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26751005/