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

如何用正则实现基于停用词的高校列表过滤?

可以用正则表达式实现这个需求

完全可以通过正则表达式实现你的要求——当用户搜索uni、univer、university或停用词the、of时,返回空结果。核心思路是先判断搜索词是否命中禁用模式,再决定是否执行原过滤逻辑。

实现步骤

  1. 编写正则匹配模式:覆盖所有需要拦截的搜索词,包括university的前缀(uni、univer等)以及停用词the、of,且忽略大小写。
  2. 先检查搜索词是否匹配禁用模式:如果匹配,直接返回空列表;否则执行原有的过滤逻辑。

正则模式说明

^(uni(v(e(r(s(i(t(y)?)?)?)?)?)?|the|of)$
  • uni(v(e(r(s(i(t(y)?)?)?)?)?)?:匹配university的所有前缀(从uni到完整的university)
  • the|of:匹配停用词本身
  • ^和$:确保是完全匹配,避免误拦截包含uni的其他无关词汇
  • 启用re.IGNORECASE忽略大小写,兼容不同大小写的搜索词

修改后的代码

import re

# 初始化时编译正则(避免重复编译提升性能)
self.forbidden_pattern = re.compile(r'^(uni(v(e(r(s(i(t(y)?)?)?)?)?)?|the|of)$', re.IGNORECASE)

# 过滤逻辑
def filter_schools(self, school):
    if self.forbidden_pattern.fullmatch(school):
        return []
    # 原过滤逻辑
    return [x for x in self.schools_list if school.lower() in x['name'].lower() or school.lower() in x['domains'][0].lower()]

简化版本(仅拦截指定词汇)

如果你只需要精准拦截uni、univer、university这三个具体词汇,而非所有前缀,可以简化正则为:

^(uni|univer|university|the|of)$

这样更简洁,完全匹配你提到的搜索场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:20:56