正则表达式以匹配组之间的空格和换行符的任意组合和数量

时间:2019-03-29 09:07:02

标签: c# regex

我正在为我的.NET程序(C#)搜索正则表达式,该正则表达式忽略多个空格和换行符,以及匹配组之间所有这些组合。

例如,在以下两个组之间可以有\r \n \t或空格

([A-Z])([A-Z0-9<])

这是一些具有所需输出的输入:

P\n0 -> P0 
N\n\rF -> NF
A\rP -> AP
A\r[space][space][space]\nP -> AP
E\n\r\nF -> EF
N\t\rF -> NF
R\t\n\r[space]F -> RF
A\rP -> AP

1 个答案:

答案 0 :(得分:1)

您可以在组之间使用\s*(0个或多个空格),并在匹配后将捕获的值连接起来:

var result = Regex.Matches(s, @"([A-Z])\s*([A-Z0-9<])")
        .Cast<Match>()
        .Select(x => $"{x.Groups[1].Value}{x.Groups[2].Value}")
        .ToList();

如果两组之间必须至少有1个空格,请将*替换为+

如果您的空白字符仅限于特定列表,请将\s*替换为[\t\r\n ]*(或[\t\r\n ]+)以仅匹配您在问题中提到的空白。