首页 > 解决方案 > 我正在尝试通过 python 中的 re.findall() 解析主题标签,但相邻的主题标签被排除在外

问题描述

我正在尝试从我的用户输入数据中解析主题标签,以便将获得的字符串(标题)转换为<a>标签(如果它们存在于我的数据库中)。基本上我希望我的网站用户能够在他们的条目中提及其他标题。

稍后我也会对“@”符号做同样的事情。

    a="lşkdjflkgtitle10#title5jdflkgjdlkf*jg lkp&fjgld#title34 kjgdl #fkgjdlfkj^#title10 "

    title= re.findall("#(.*?)[\s|#|@|$)]",a)
    print(title)

但是,如果没有其他符号分隔两个主题标签,我无法让 re.findall 解析第二个主题标签。

结果:

['title5jdflkgjdlkf*jg', 'title34', 'fkgjdlfkj^']

谢谢你们!

标签: python

解决方案


您需要使用“前瞻”来防止上一个匹配项消耗下一个匹配项的井号。

此代码应适用于您的所有标签:

import re

a = u"lşkdjflkgtitle10#title5jdflkgjdlkf*jg lkp&fjgld#title34 kjgdl #fkgjdlfkj^#title10 "

title = re.findall(r"[#@]([^\s#@$]*)(?=[\s#@$])", a)

print(title)

推荐阅读