C#正则表达式如何从字符串中排除

Posted

技术标签:

【中文标题】C#正则表达式如何从字符串中排除【英文标题】:C# regex how to exclude from string 【发布时间】:2021-12-08 16:10:32 【问题描述】:

我正在 c# 上处理正则表达式,我只需要从字符串中获取一部分并排除所有其余部分。

var file = "XD_ADX_W_CGX_CLAIMS_2021_07_11.TXT";

我只想从上面的字符串中获取“CGX_CLAIMS”,XD_ADX 是可变的,W 是静态的,2021_07_11 也是可变的

我能够使用以下正则表达式提取日期:

 Regex r = new Regex(@"[_]\d4[_]\d2[_]\d2[.]", RegexOptions.RightToLeft);

现在我只需要提取 CGX_CLAIMS(即变量..可能是其他字符串)...有什么想法吗?

谢谢!!

【问题讨论】:

【参考方案1】:

由于_W_是静态的,所以可以使用

_W_(.*?)_\d4_\d2_\d2\.

请参阅regex demo。 详情

_W_ - 一个已知的子串 (.*?) - 第 1 组:除换行符以外的任何零个或多个字符,尽可能少 _\d4_\d2_\d2\. - _,四位数字,_,两位数字,_,两位数字和一个 . 字符。

在 C# 中,您可以使用

var output = Regex.Match(text, @"_W_(.*?)_\d4_\d2_\d2\.")?.Groups[1].Value;

【讨论】:

以上是关于C#正则表达式如何从字符串中排除的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 2.0 中使用正则表达式处理 < 或 > 类型的字符串的编码

C# 正则表达式 - 排除文本开头和结尾的下划线和空格

正则表达式:从“内容”中排除 html 标签

c# 正则表达式截取字符串

如何在 C# 中使用正则表达式从字符串中提取域名?

如何在配置单元中使用正则表达式排除字符串中的特殊字符