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

C#实现含括号拆分关键词的指定区间子字符串截取

解决关键词被随机括号拆分后的字符串截取问题

可以通过正则表达式处理关键词被{数字.数字}格式括号拆分的场景,核心思路是将起始词和结束词转换为允许字符间插入任意括号的正则模式,准确定位被拆分的关键词位置后,再截取中间内容。

完整实现代码

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string startWord = "string";
        string endWord = "fetch";
        string firstString = "the string i want to fetch is this";
        string secondString = "the strin{9.6}g i want{6.2} to fet{5.2}ch is this";

        // 将关键词转换为允许插入{xxx}括号的正则模式
        string startPattern = BuildPattern(startWord);
        string endPattern = BuildPattern(endWord);

        // 处理第一个字符串
        string firstOutput = ExtractBetweenKeywords(firstString, startPattern, endPattern);
        Console.WriteLine("第一个字符串输出: " + firstOutput); // 输出: i want to

        // 处理第二个字符串
        string secondOutput = ExtractBetweenKeywords(secondString, startPattern, endPattern);
        Console.WriteLine("第二个字符串输出: " + secondOutput); // 输出: i want{6.2} to
    }

    // 构建正则模式:每个字符之间允许插入任意{数字.数字}格式的括号
    static string BuildPattern(string keyword)
    {
        return string.Join(@"(\{[\d.]+\})?", keyword.ToCharArray());
    }

    // 提取两个关键词之间的内容
    static string ExtractBetweenKeywords(string input, string startPattern, string endPattern)
    {
        // 用正向零宽断言定位关键词位置,非贪婪匹配中间内容
        string fullPattern = $@"(?<={startPattern})\s*(.*?)\s*(?={endPattern})";
        Match match = Regex.Match(input, fullPattern, RegexOptions.IgnoreCase);
        
        return match.Success ? match.Groups[1].Value.Trim() : string.Empty;
    }
}

代码说明

  1. BuildPattern方法:拆分原始关键词的每个字符,在字符间插入可选的(\{[\d.]+\})?规则,该规则可匹配任意{数字.数字}格式的括号,同时保留关键词本身的字符顺序。
  2. ExtractBetweenKeywords方法:通过正向零宽断言(?<=...)和(?=...)精准定位起始关键词的结束位置、结束关键词的起始位置,非贪婪匹配.*?确保只截取两个关键词之间的内容,最后去除首尾空白。
  3. 大小写兼容:通过RegexOptions.IgnoreCase保持和原代码一致的大小写不敏感匹配逻辑。

内容的提问来源于stack exchange,提问作者Is'haq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:35:11