如何在Python中搜索字符串文本中提及的短语?

问题描述 投票:0回答:1

请问您能帮我解决以下疑问吗?

我有一条短信:

text = VLOG - Primer evento de la temporada #ModaenTiktok #eventotiktok #madrid @Tik Tok españa

我只需要提取提及:

@Tik Tok españa

最经济实惠的方法是什么?

我尝试过:

regex = re.compile("(^|\W)(?:@)([A-Za-z0-9_](?:(?:[A-Za-z0-9_]|(?:\.(?!\.))){0,28}(?:[A-Za-z0-9_]))?)", re.UNICODE)

mention = regex.findall(text)

但我只得到

Tik

python search text python-re findall
1个回答
0
投票

根据对您问题的评论,您似乎正在尝试收集

@
标签,这些标签可能有空格,也可能没有空格。从文本中,我们可以看到这些标签以
@
开头,但绝不允许使用
#
,因为这是主题标签而不是标签。因此,我们可以使用这两个规则编写一个非常简单的正则表达式解决方案:

re.compile(r"\@[^\#\@\n]+?(?= *[\#\@\n]|$)")

更详细地说,这里我们收集以

@
开头的任何文本,并收集任何内容(不包括其他 @、# 或硬回车(只是好的做法)),并在下一个字符是另一个
 时停止。 @
标签、
#
或字符串\行的末尾。我在前瞻的开头添加了一个
 *
,因为这将允许正则表达式也忽略任何尾随空格,但这是可选的。

您可以在这里看到它的工作原理:https://regex101.com/r/2T07b0/1

© www.soinside.com 2019 - 2024. All rights reserved.