如何用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
相关产品推荐
相关产品推荐

