Портирование регулярки - C#
Формулировка задачи:
Здравствуйте!
Есть одна регулярка, которую мне помог написать один хороший человек. Она прекрасно работает - https://regex101.com/r/8Fzyqc/2.
То есть у меня есть рекурсивная регулярка и все парсится нормально, но когда я это вставляю в си# -
1) Подсвечиваются ошибки в регулярке
2) А есть я ее немного изменю -
@(?<m>\\w+)\\((?<d>(?:[^()]+|\\((?<m>)\\))*)\\)
Парсер видит только внутренние вхождения, а внешнее пропускает. Например - @id1(@id2(Boom)) - id2 увидит и обработает, а внешний не видит. Видимо, я не правильно поменял регулярку... Подскажите, что с ней не так? PS: изначально искал помощь и получил ее в разделе php. Собственно там мне и помогли, но портировать под c# я ее не смог. Вот тема - ошибка в регуляркеРешение задачи: «Портирование регулярки»
textual
Листинг программы
var text = @" dd @id1(Hello c @id2(Boom @id3(B d) daa) ada ) dad @id2(Boom) @id2(Boom) "; var rawPattern = @" @\w+ (?<value> ( ( ( ?'Open'\( ) [^()]* )+ ( ( ?'Close-Open'\) ) (?(Open)[^()]*) )+ )+ ) (?(Open)(?!)) "; rawPattern = Regex.Replace(rawPattern, @"\s", ""); var regex = new Regex(rawPattern, RegexOptions.Singleline); regex .Matches(text) .Cast<Match>() .Select(m => m.ToString() + " , value=" + m.Groups["value"].Value) .ToList() .ForEach(Console.WriteLine);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д