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

如何用正则递归提取X与下一个X之间的内容?

解决方案

针对你的需求,要提取相邻X之间(以及最后一个X之后)的内容,可以使用以下正则表达式:

(?s)X(.*?)(?=X|$)

正则说明

  • (?s):启用单行模式,让通配符.可以匹配换行符,适配跨多行的内容。
  • X:匹配起始的分隔符X。
  • (.*?):非贪婪捕获组,提取X之后到下一个匹配条件前的所有内容(对应你需要的aaaa/bbbb/cccc)。
  • (?=X|$):正向预查,匹配后面紧跟X或者字符串结尾的位置,不会消耗X字符,确保下一次匹配可以从下一个X开始,实现连续提取。

C# 代码示例

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = @"X
aaaa
X
bbbb
X
cccc";
        // 正则表达式
        string regexPattern = @"(?s)X(.*?)(?=X|$)";
        
        foreach (Match match in Regex.Matches(input, regexPattern))
        {
            // 去除内容前后的空白(包括换行),和你原示例的输出格式对齐
            string content = match.Groups[1].Value.Trim();
            Console.WriteLine($"Match{match.Index / input.IndexOf('\n') + 1}.Group1: \"{content}\"");
        }
    }
}

输出结果

运行后会得到和你原需求一致的输出:

Match1.Group1: "aaaa"
Match2.Group1: "bbbb"
Match3.Group1: "cccc"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:52:41