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

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());

}
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Код:
string regex = @"(?<=href=""index\.php\?cf=uzd-readtask&amp;zdid=).*?(?=""\ class=""blue""\ viewtooltip=""1"">)";
 
  • Спасибо
Реакции: proffman

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
239
Баллы
43
Столкнулся с такой проблемой. В стандартном экшине где парсим 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

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Оба способа рабочие и довольно наглядные, дальше, остается понять саму логику :-) Спасибо !)
 

surrealmix

Client
Регистрация
07.03.2013
Сообщения
715
Благодарностей
409
Баллы
63
Оба способа рабочие и довольно наглядные, дальше, остается понять саму логику :-) Спасибо !)
Необходимо просто экранировать нужные символы в соответствии с синтаксисом C#.
Либо же регулярку брать из переменной зенно и в C# коде использовать так:
Код:
string regex = project.Variables["regex"].Value;
тогда не придётся ничего экранировать.
 
  • Спасибо
Реакции: proffman

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