Страницы

Поиск по вопросам

вторник, 21 мая 2019 г.

Включение части результата в следующий результат

строка: abcd, вывести ab bc cd. можно ли это сделать в одной регулярке, без replace?
p.s условие будет куда сложнее, чем вывести последний символ предыдущего результата


Ответ

Сам по себе движок регексов в C# выдает непересекающиеся совпадения, но можно использовать positive lookahead:
var matches = Regex.Matches("abcd", "(.)(?=(.))") .Cast() .Select(m => m.Groups[1].Value + m.Groups[2].Value) .ToArray();
Точки заменить на соответствующие regex-ы для перекрываемых / неперекрываемых частей.
Стоит заметить, что простое решение с циклом и вызвов перегрузки Match с указанием начального индекса будет проще, читабельнее и эффективнее на длинных строчках.

Комментариев нет:

Отправить комментарий