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

Python re.findall如何提取已知前缀后长度未知的完整字符串?

问题根因

原正则使用\w作为匹配规则,该元字符仅能匹配字母、数字、下划线三类字符,遇到目标模型名中的半角横杠-就会终止匹配,因此只能拿到横杠前的paraphrase片段。

修正后的正则写法

根据使用场景可选两种方案:

  • 固定字符集匹配(性能更高,适配已知模型名规则的场景)
    直接将半角横杠加入匹配字符集即可,代码如下:
    import re
    models = re.findall(r"sentence-transformers/([\w-]+)", text)
    
    该规则可以完整匹配由字母、数字、下划线、横杠组成的模型名,覆盖目前所有公开的sentence-transformers预训练模型命名格式。
  • 边界匹配(适配性更强,适合HTML文本中混杂各类标签、特殊符号的场景)
    无需提前枚举模型名可能包含的字符,直接匹配到字符串自然边界即可,代码如下:
    import re
    models = re.findall(r"sentence-transformers/([^\s<>"'`]+)", text)
    
    该规则会匹配前缀之后所有不属于空白字符、HTML标签尖括号、引号的连续内容,即使后续模型名出现.、二级路径这类特殊字符也能正常提取,不会出现截断问题。
测试验证

针对包含sentence-transformers/paraphrase-MiniLM-L6-v2的测试文本,上述两种写法均能正确提取完整的paraphrase-MiniLM-L6-v2字符串,不会出现仅返回首个片段的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:18:22