Не работает регулярка в C#

  • Автор темы Автор темы proffman
  • Дата начала Дата начала

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Реакции
51
Баллы
28
Столкнулся с такой проблемой. В стандартном экшине где парсим dom регуляркой всё отлично работает. Регулярка -
Код:
Развернуть Свернуть Копировать
(?<=href="index\.php\?cf=uzd-readtask&amp;zdid=).*?(?="\ class="blue"\ viewtooltip="1">)

Но стоит добавить эту регулярку в сниппет, после чего он вовсе не выполняется...
Код:
Развернуть Свернуть Копировать
var dom1 = instance.ActiveTab.DomText;




var list = project.Lists["result"];
string regex = "(?<=href="index\.php\?cf=uzd-readtask&amp;zdid=).*?(?="\ class="blue"\ viewtooltip="1">)";
var reg = new System.Text.RegularExpressions.Regex(regex, System.Text.RegularExpressions.RegexOptions.None);
int list_count = reg.Matches(dom1).Count;
for (int i=0; i<list_count; i++)
{
    list.Add(reg.Matches(dom1)[i].ToString());

}
 
Код:
Развернуть Свернуть Копировать
string regex = @"(?<=href=""index\.php\?cf=uzd-readtask&amp;zdid=).*?(?=""\ class=""blue""\ viewtooltip=""1"">)";
 
  • Оценить
Реакции: proffman
Столкнулся с такой проблемой. В стандартном экшине где парсим dom регуляркой всё отлично работает. Регулярка -
Код:
Развернуть Свернуть Копировать
(?<=href="index\.php\?cf=uzd-readtask&amp;zdid=).*?(?="\ class="blue"\ viewtooltip="1">)

Но стоит добавить эту регулярку в сниппет, после чего он вовсе не выполняется...
Код:
Развернуть Свернуть Копировать
var dom1 = instance.ActiveTab.DomText;




var list = project.Lists["result"];
string regex = "(?<=href="index\.php\?cf=uzd-readtask&amp;zdid=).*?(?="\ class="blue"\ viewtooltip="1">)";
var reg = new System.Text.RegularExpressions.Regex(regex, System.Text.RegularExpressions.RegexOptions.None);
int list_count = reg.Matches(dom1).Count;
for (int i=0; i<list_count; i++)
{
    list.Add(reg.Matches(dom1)[i].ToString());

}
также можешь вставить ее в таком виде
Код:
Развернуть Свернуть Копировать
(?<=href=\"index\\.php\\?cf=uzd-readtask&amp;zdid=).*?(?=\"\\ class=\"blue\"\\ viewtooltip=\"1\">)
 
  • Оценить
Реакции: Ribas и proffman
Оба способа рабочие и довольно наглядные, дальше, остается понять саму логику :-) Спасибо !)
 
Оба способа рабочие и довольно наглядные, дальше, остается понять саму логику :-) Спасибо !)
Необходимо просто экранировать нужные символы в соответствии с синтаксисом C#.
Либо же регулярку брать из переменной зенно и в C# коде использовать так:
Код:
Развернуть Свернуть Копировать
string regex = project.Variables["regex"].Value;
тогда не придётся ничего экранировать.
 
  • Оценить
Реакции: proffman

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)