如何用正则递归提取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
相关产品推荐
相关产品推荐

