Страницы

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

среда, 4 марта 2020 г.

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

#c_sharp #регулярные_выражения


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

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


Ответы

Ответ 1



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

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

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