You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从文本中提取以#开头到空格前的子串(如#Covid19等话题标签)

话题标签提取实现方案

这类以固定符号开头的子串提取直接用正则匹配就能实现,性能和准确率都满足需求。

核心匹配规则

正则匹配模式为#\S+:

  • 开头#匹配话题标签的起始标识
  • \S+匹配所有非空白字符,直到遇到第一个空格自动停止匹配
  • 开启全局匹配即可一次性拿到文本里所有符合要求的标签

各语言实现示例

  • Python 实现
import re

text = "今天是重要的里程碑。自3月21日以来首次没有报告#CoVid19死亡病例。这是充满希望的一天,我们终将获胜#VaccineRecovery。"
# 匹配所有话题标签,自动过滤结果里的标点后缀可以用r'#\w+'
hashtags = re.findall(r'#\S+', text)
print(hashtags)
# 输出:['#CoVid19', '#VaccineRecovery']
  • JavaScript 实现
const text = "今天是重要的里程碑。自3月21日以来首次没有报告#CoVid19死亡病例。这是充满希望的一天,我们终将获胜#VaccineRecovery。";
const hashtags = text.match(/#\S+/g) || [];
console.log(hashtags);
// 输出:['#CoVid19', '#VaccineRecovery']
  • Java 实现
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HashtagExtract {
    public static void main(String[] args) {
        String text = "今天是重要的里程碑。自3月21日以来首次没有报告#CoVid19死亡病例。这是充满希望的一天,我们终将获胜#VaccineRecovery。";
        Pattern pattern = Pattern.compile("#\\S+");
        Matcher matcher = pattern.matcher(text);
        List<String> hashtags = new ArrayList<>();
        while (matcher.find()) {
            hashtags.add(matcher.group());
        }
        System.out.println(hashtags);
        // 输出:[#CoVid19, #VaccineRecovery]
    }
}

补充说明

如果需要剔除标签末尾的标点符号(比如示例里#VaccineRecovery后面的句号),可以把正则调整为#[\w\u4e00-\u9fa5]+,支持匹配中英文、数字、下划线组成的标签,自动忽略末尾标点。

内容的提问来源于stack exchange,提问作者ribena1980

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:06:02