Регулярное выражение для соответствия любой комбинации и количеству пробелов и разрывов строк между группами - PullRequest
1 голос
/ 29 марта 2019

Я ищу регулярное выражение для моей .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 Ответ

1 голос
/ 29 марта 2019

Вы можете использовать \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();

Если между двумя группами должен быть хотя бы один пробел, заменить * на +.

Если ваши пробельные символы ограничены определенным списком, замените \s* на [\t\r\n ]* (или [\t\r\n ]+), чтобы соответствовать только пробелу, который вы упомянули в вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...