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

如何用Python正则表达式判断字符串是否包含所有子串

判断字符串是否包含所有指定子串的实现方法

方案一:用Python内置in运算符(推荐,无需正则)

这是最直观易懂的方法,完全不需要理解正则语法,直接利用Python的子串判断功能:

def func(substr_list, target_str):
    for substr in substr_list:
        if substr not in target_str:
            return False
    return True

工作原理

遍历传入的子串列表,逐个检查每个子串是否存在于目标字符串中:

  • 只要有一个子串不在目标字符串里,立刻返回False
  • 所有子串都存在的话,返回True

测试你的示例代码

target_str = "chair table planttest"  # 避免用str作为变量名,它是Python内置类型
substr = ["plant", "tab"]
x = func(substr, target_str)
print(x)  # 输出:True

注:建议不要用str作为变量名,它会覆盖Python的内置字符串类型,改用target_str这类名称更规范。


方案二:正则表达式实现(适合需要正则场景)

如果你确实需要用正则实现,可以用正向肯定预查来构造匹配规则,同时用re.escape()处理子串中的特殊字符(比如., *等):

import re

def func(substr_list, target_str):
    # 构造正则模式:每个子串对应一个正向预查,确保全部存在
    pattern = ''.join([f'(?=.*{re.escape(substr)})' for substr in substr_list])
    # 检查模式是否匹配目标字符串
    return bool(re.search(pattern, target_str))

工作原理

  • re.escape(substr):转义子串中的正则特殊字符,避免意外报错
  • (?=.*{substr}):正向预查语法,意思是“当前位置之后的字符串包含该子串”
  • 把所有预查规则拼接在一起,就要求目标字符串同时满足包含所有子串的条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:45:55