如何在C#中提取字符串中的<<占位符>>并拆分输出列表
C# 实现提取占位符并拆分文本
解决方案
使用正则表达式匹配占位符和普通文本段,将每个匹配结果单独输出为一行。正则模式会准确识别<<...>>格式的占位符,同时保留原文本中的换行符、空格等所有字符。
代码示例
using System; using System.Text.RegularExpressions; class Program { static void Main() { // 原始输入字符串(硬编码时用@前缀保留转义字符) string input = @"My name is <<yourName>> and I am working in the <<Team Name>> team\n as a <<yourTitle>>."; // 若原始字符串中的\n是文本形式而非转义,可执行此替换转为实际换行 input = input.Replace(@"\n", Environment.NewLine); // 正则模式:匹配占位符 或 占位符之外的所有文本(含换行) string pattern = @"<<.*?>>|[\s\S]+?(?=<<|$)"; MatchCollection matches = Regex.Matches(input, pattern); // 遍历匹配结果并逐行输出 foreach (Match match in matches) { string line = match.Value.TrimEnd('\r', '\n'); Console.WriteLine(line); } } }
正则模式说明
<<.*?>>:匹配<<开头、>>结尾的占位符,.*?采用非贪婪匹配,确保不会覆盖多个占位符。[\s\S]+?(?=<<|$):匹配任意字符(包括换行符\r/\n),直到遇到下一个占位符<<或字符串结束。+?非贪婪模式避免过度匹配。
适配需求
- 支持占位符内包含空格(如
<<Team Name>>) - 完整保留原字符串中的换行符、空格等字符
- 兼容任意内容的占位符(无预定义限制)
内容的提问来源于stack exchange,提问作者Kubilay
相关产品推荐
相关产品推荐

