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

如何从字符串中提取指定起始与结束文本之间的子串?

可行的提取方法分享

当然有办法实现这个需求啦!我给你整理了几种通用的思路,不管你用哪种编程语言,核心逻辑都是定位目标子串的起始和结束位置,然后截取中间内容。下面以Python和JavaScript为例,给你具体的实现代码:

方法一:正则表达式(推荐,灵活通用)

正则表达式非常适合这种匹配特定起止标记的场景,用非贪婪模式可以精准匹配从第一个"This"到最近的"abc"之间的内容:

Python 示例

import re

original_str = "__GENUS : 2 __CLASS : Win32_Process __SUPERCLASS : __DYNASTY : __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH : CommandLine : This is a Example Hello 789 123 abc PSComputerName : "
# 用非贪婪匹配确保只取到第一个"abc"为止
match_result = re.search(r'This.*?abc', original_str)
if match_result:
    target_str = match_result.group()
    print(target_str)  # 输出:This is a Example Hello 789 123 abc
else:
    print("未找到目标内容")

JavaScript 示例

const originalStr = "__GENUS : 2 __CLASS : Win32_Process __SUPERCLASS : __DYNASTY : __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH : CommandLine : This is a Example Hello 789 123 abc PSComputerName : ";
const match = originalStr.match(/This.*?abc/);
const targetStr = match ? match[0] : "未找到目标内容";
console.log(targetStr);

方法二:字符串索引定位+切片

如果不想用正则,也可以通过查找标记的索引位置,直接切片截取:

Python 示例

original_str = "__GENUS : 2 __CLASS : Win32_Process __SUPERCLASS : __DYNASTY : __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH : CommandLine : This is a Example Hello 789 123 abc PSComputerName : "
start_pos = original_str.find("This")
end_pos = original_str.find("abc")

# 确保两个标记都找到再截取
if start_pos != -1 and end_pos != -1:
    # 加上"abc"的长度,确保包含最后一个字符
    target_str = original_str[start_pos : end_pos + len("abc")]
    print(target_str)
else:
    print("未找到目标内容")

JavaScript 示例

const originalStr = "__GENUS : 2 __CLASS : Win32_Process __SUPERCLASS : __DYNASTY : __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH : CommandLine : This is a Example Hello 789 123 abc PSComputerName : ";
const startIdx = originalStr.indexOf("This");
const endIdx = originalStr.indexOf("abc");

if (startIdx !== -1 && endIdx !== -1) {
    const targetStr = originalStr.slice(startIdx, endIdx + 3); // "abc"长度为3
    console.log(targetStr);
} else {
    console.log("未找到目标内容");
}

这两种方法都能满足你的需求,正则更适合复杂的匹配场景,索引切片则更直观易懂,你可以根据自己的习惯和实际场景选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:17:35