C#如何使用正则表达式从指定格式字符串中提取目标可变片段
解决方案
实现思路
你的字符串满足固定结构:[可变前缀]_W_[目标片段]_yyyy_MM_dd.[后缀],要提取的目标片段位于固定标识_W_之后、日期前缀之前,用正则的前后断言可直接锁定目标,无需额外处理捕获组。
正则表达式
匹配规则:@"(?<=_W_).+?(?=_\d{4}_\d{2}_\d{2}\.)"
各部分作用:
(?<=_W_):正向肯定后视断言,限定匹配内容的前缀必须是固定标识_W_,该部分不会被纳入最终匹配结果.+?:非贪婪匹配任意字符,即你需要提取的可变目标片段(?=_\d{4}_\d{2}_\d{2}\.):正向肯定前视断言,限定匹配内容的后缀必须是下划线加日期加小数点的格式,该部分不会被纳入最终匹配结果
C# 调用示例
using System; using System.Text.RegularExpressions; class Program { static void Main() { string file = "XD_ADX_W_CGX_CLAIMS_2021_07_11.TXT"; Regex regex = new Regex(@"(?<=_W_).+?(?=_\d{4}_\d{2}_\d{2}\.)"); string target = regex.Match(file).Value; Console.WriteLine(target); // 输出结果:CGX_CLAIMS } }
注意事项
- 如果目标片段允许为空,可以将
.+?替换为.*? - 如果固定标识W存在大小写波动,可以在构造Regex时添加
RegexOptions.IgnoreCase参数
内容的提问来源于stack exchange,提问作者GeorgeWatt23
相关产品推荐
相关产品推荐

