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

如何在Python中不使用OR语句判断字符串是否包含多个指定子串

Python无需OR语句实现多子串匹配的方案

完全可以不使用or语句实现和原代码完全一致的逻辑,以下是几种常用的实现方式:

  • 使用any()内置函数(最推荐)
    把所有需要匹配的子串存入列表或元组,利用any()的短路迭代特性:只要任意一个子串存在于目标字符串中就返回True,逻辑和原or写法完全等价,后续新增匹配规则只需要修改子串集合即可,可维护性更高。
    示例代码:
    a = '/dvi/abcbbb'
    match_subs = ('/dev/', '/dv/', '/dvi/')
    if any(sub in a for sub in match_subs):
        print(a)
    # 输出:/dvi/abcbbb
    
  • 使用正则表达式匹配
    借助正则的多选分支符|实现多子串匹配,调用re.search()判断是否存在命中项。如果匹配子串包含正则特殊字符,需要先用re.escape()处理避免转义异常。
    示例代码:
    import re
    a = '/dvi/abcbbb'
    if re.search(r'/dev/|/dv/|/dvi/', a):
        print(a)
    # 输出:/dvi/abcbbb
    
    如果匹配项较多,也可以通过字符串拼接生成正则规则:
    match_subs = ('/dev/', '/dv/', '/dvi/')
    pattern = '|'.join(re.escape(sub) for sub in match_subs)
    if re.search(pattern, a):
        print(a)
    
  • 使用标记位逐次判断
    自定义标记变量记录匹配结果,逐次校验每个子串后再执行打印逻辑,适合不想引入额外依赖的场景。
    示例代码:
    a = '/dvi/abcbbb'
    is_match = False
    if '/dev/' in a:
        is_match = True
    if '/dv/' in a:
        is_match = True
    if '/dvi/' in a:
        is_match = True
    if is_match:
        print(a)
    # 输出:/dvi/abcbbb
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 18:54:06