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

如何提取字符串s2中不存在于s1的差异内容?(含示例)

解决方案:提取s2中未在s1出现的目标内容

针对你的需求,我可以给出一个简洁的Python实现,完全匹配你预期的输出效果。

思路说明

你的需求本质是找到s2中最长的、同时也是s1子串的前缀,然后返回该前缀之后的所有内容——毕竟示例里s2的开头"this is a test"正好是s1包含的子串,剩下的部分就是我们需要提取的目标内容。

代码实现

def diff(s1, s2):
    # 从s2的最长可能前缀开始检查,逐步缩短长度
    for prefix_length in range(len(s2), 0, -1):
        current_prefix = s2[:prefix_length]
        if current_prefix in s1:
            # 找到最长匹配前缀后,返回剩余部分
            return s2[prefix_length:]
    # 如果s2没有任何内容在s1中,直接返回整个s2
    return s2

# 测试示例
s1 = "hello how are you, this is a test"
s2 = "this is a test, testing testing."
print(diff(s1, s2))  # 输出: ", testing testing."

为什么这么做?

  • 从最长前缀开始检查,能确保我们找到s2和s1重叠最多的部分,避免返回不必要的重复内容
  • 一旦找到匹配的前缀就立即返回,效率很高,不需要遍历所有可能的子串
  • 边界情况也能完美处理:如果s2完全不在s1里,会返回整个s2;如果s2完全是s1的子串,会返回空字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:18:06