#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
Комментариев нет:
Отправить комментарий