Страницы

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

четверг, 9 апреля 2020 г.

Составить регулярное выражение

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

                    
Здравствуйте, такая проблема, необходимо написать регулярное выражение, которое выделяло
бы все, что находится между словами =begin и =end. Если же случай такой - =begin ...
=end ... =end, то вернуть нужно только то что идет до первого =end. Сам я написал вот
это - "=begin(.*)=end", но это работает только, когда текст умещается в одной строке.
    


Ответы

Ответ 1



using System.Text.RegularExpressions; // ... var str = "=begin 1 =end 2 =end"; var m = Regex.Match(str, "=begin(.+?)=end", RegexOptions.Singleline); m.Groups[1].Value // " 1 "

Ответ 2



Попробуйте использовать однострочный режим. В этом режиме, в отличие от обычного, символ '\n' входит в маску .. Для использования этого режима необходимо при создании/вызове Regex, передавать в качестве последнего аргумента конструктора/метода опцию RegexOptions.Singleline. Пример: string s = "=begin буквы \n еще буквы =end"; Regex r1 = new Regex("=begin(.*)=end"); Regex r2 = new Regex("=begin(.*)=end", RegexOptions.Singleline); Console.WriteLine(r1.IsMatch(s)); // False Console.WriteLine(r2.IsMatch(s)); // True

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

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