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

如何实现链接的精确关键词匹配筛选?避免子串匹配问题

精准匹配关键词筛选链接的解决方案

问题场景

有一组链接需要筛选出包含精确匹配关键词(如join、career)的链接,示例链接列表:

links = ['https://enzymocore.com/news/august-2015-joint-venture-in-peru/', 'https://enzymocore.com/join-us']

当关键词为join时,仅需获取第二个链接,但原代码会误将包含joint的第一个链接也纳入结果:

finallink = []
for link in links:
    if 'join' in link:
        finallink.append(link)

解决方案

方法1:正则表达式匹配单词边界

利用正则的\b(单词边界)确保关键词是独立单元,不会匹配包含它的子串:

import re

keywords = ['join', 'career']
links = ['https://enzymocore.com/news/august-2015-joint-venture-in-peru/', 'https://enzymocore.com/join-us']
finallink = []

for link in links:
    # 遍历关键词,匹配任意一个精确关键词
    if any(re.search(rf'\b{re.escape(key)}\b', link) for key in keywords):
        finallink.append(link)

print(finallink)  # 输出: ['https://enzymocore.com/join-us']

注:用re.escape()处理关键词,避免关键词含特殊正则字符时出错。

方法2:分割链接片段后检查

把链接按/和-分割成独立片段,检查关键词是否为完整片段:

keywords = {'join', 'career'}  # 用集合提升查找效率
links = ['https://enzymocore.com/news/august-2015-joint-venture-in-peru/', 'https://enzymocore.com/join-us']
finallink = []

for link in links:
    # 拆分链接中的所有分隔片段
    parts = re.split(r'[-/]', link)
    if any(key in parts for key in keywords):
        finallink.append(link)

print(finallink)  # 输出: ['https://enzymocore.com/join-us']

方法3:直接匹配关键词的分隔场景

如果关键词通常出现在路径分隔符前后,直接检查这类固定格式:

keywords = ['join', 'career']
links = ['https://enzymocore.com/news/august-2015-joint-venture-in-peru/', 'https://enzymocore.com/join-us']
finallink = []

for link in links:
    for key in keywords:
        # 匹配关键词前是/、后是-,或链接以关键词结尾的情况
        if f'/{key}' in link or f'{key}-' in link or link.endswith(key):
            finallink.append(link)
            break

print(finallink)  # 输出: ['https://enzymocore.com/join-us']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:48:34