python - 匹配可选的 '#' 似乎无法正常工作

标签 python regex

我正在尝试从字符串中获取完整的单词或主题标签,似乎我正在应用“可选字符”?正则表达式中的标记错误。

这是我的代码:

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/

相关文章:

Javascript正则表达式来验证日期

regex - Snort 规则正则表达式匹配

python - pandas:pandas.DataFrame.describe 只返回一列的信息

python - 用 Python 编写 Discord 机器人程序——不知道如何设置 react 角色

python - 要使用 psycopg2 在 python 中使用部门名称显示部门 ID?

Javascript 正则表达式匹配*不*行首

regex - PHP preg_match_all 限制

regex - 小于等于运算符 (<=) 的 Scala 正则表达式

python - django 将字段名称作为 get_or_create 中的变量传递

python - 根据条件将一个 pandas 数据框的值替换为另一个