#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 с указанием начального индекса будет проще, читабельнее и эффективнее на длинных строчках.
Комментариев нет:
Отправить комментарий