и снова регулярки

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
сразу, чтоб не пинали: я в регулярках нуб(все времени нету освоить)
итак: нужно выпарсить из нтмл ссыль на регу: перед текстом должно идти a href=", с этим все понятно а вот далее, что то я застрял, заканчиваться текст должен: registers после которого могут идти любые символы, буквы, цифры(кроме пробелов) после текста идет: "
если кто знает и кому не сложно ответить .. плиз... а то работа встала
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
532
Баллы
93
Попробуй такую регулярку:
(?<=a\ href=").*?registers.*?(?=")
 
  • Спасибо
Реакции: blud

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
вот столкнулся сейчас с таким: <a href = "http (обратите внимание на пробелы перед и после знака равно) ..
как исправить вышеуказанную регулярку, что бы парсило и с пробелами и без??? заранее спасибо
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Так попробуй:
Код:
(?<=").*?registers.*?(?=")
нужно выпарсить из нтмл ссыль на регу
Не пойму, а что ссылка на регистрацию всегда разная?
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
532
Баллы
93
(?<=a\ href(\ |)=").*?registers.*?(?=")
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
Так попробуй:
Код:
(?<=").*?registers.*?(?=")
к сожалению неподходит .. цепляет сначала ссыль на авторизацию
вот кусок кода:
Код:
<tbody id = "topprofilebox_tbody">
            <tr class = "fb_sectiontableentry1">
                <td valign = "top" class = "td-1  fbm fb_profileboxcnt" align="left">
Willkommen, <b>Besucher</b>

                <br/> Bitte
                <a href = "/Anmelden.html">anmelden</a> oder <a href = "/index.php?option=com_user&amp;Itemid=112&amp;lang=de&amp;view=register">registrieren</a>.

                &nbsp;&nbsp;

                <a href = "/Passwort-vergessen.html">Passwort vergessen?</a>

</td>
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Потому что меняется не только
вот столкнулся сейчас с таким: <a href = "http (обратите внимание на пробелы перед и после знака равно) ..
а еще "registers", во втором случае register (без "s" на конце).
Можно так, если конечно не попадется еще каких-то вариантов ссылок:
Код:
((?<=a\ href=").*?registers.*?(?="))|((?<=a\ href\ =\ ").*?register.*?(?="))
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
Потому что меняется не только
а еще "registers", во втором случае register (без "s" на конце).
там попадаются и registers и register и registration... у меня в регулярке этот фрагмент такой: regist.*?(?=")
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
Ну тогда:
Код:
(?<=a\ href(\ |)=(\ |)").*?regist.*?(?=")
не подходит ... цепляет ссылку на логин... результат регулярки по вышеуказаному фрагменту:
Код:
/Anmelden.html">anmelden</a> oder <a href = "/index.php?option=com_user&amp;Itemid=112&amp;lang=de&amp;view=register
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
не подходит ... цепляет ссылку на логин... результат регулярки по вышеуказаному фрагменту:
Код:
/Anmelden.html">anmelden</a> oder <a href = "/index.php?option=com_user&amp;Itemid=112&amp;lang=de&amp;view=register
Вон оно чё! А слово "oder" перед "<a href" во всех ссылках есть? Просто хз за что еще зацепиться. Или "/index.php"?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Код:
(?<=\w\s<a\ href(\ |)=(\ |)").*?regist.*?(?=")
 
  • Спасибо
Реакции: blud

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
спасибо .. помогло
можешь так ещё заменить
Код:
(?<=\w\s<a\ href[^*<]+").*?regist.*?(?=")
C#:
return System.Text.RegularExpressions.Regex.Match(project.Variables["response"].Value, @"(?<=\w\s<a[^*<]+"").*?regist.*?(?="")").Value.Replace("amp;", "").Trim();
 
  • Спасибо
Реакции: blud

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
можешь так ещё заменить
Код:
(?<=\w\s<a\ href[^*<]+").*?regist.*?(?=")
C#:
return System.Text.RegularExpressions.Regex.Match(project.Variables["response"].Value, @"(?<=\w\s<a[^*<]+"").*?regist.*?(?="")").Value.Replace("amp;", "").Trim();
а это еще лучше ... я как раз думал как все в c# сделать
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
а если еще усложнить:
Код:
<span class="kprofilebox-register">
                            <a href="/index.php/shop-login?view=registration" rel="nofollow">Create an account</a>
                        </span>
такое эта: (?<=\w\s<a\ href[^*<]+").*?regist.*?(?=") регулярка уже не парсит
пы.сы .. да .. это куски кода с одного и того же движка
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
а если еще усложнить:
Код:
<span class="kprofilebox-register">
                            <a href="/index.php/shop-login?view=registration" rel="nofollow">Create an account</a>
                        </span>
такое эта: (?<=\w\s<a\ href[^*<]+").*?regist.*?(?=") регулярка уже не парсит
пы.сы .. да .. это куски кода с одного и того же движка
я думаю вариант, двумя регулярками обработать этот движок
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
тоесть одной, но пройти два раза
Код:
(?<=a\ href[^*<]+").*?regist.*?(?=")
при первом проходе у тебя будет сылка в таком формате
Код:
/Anmelden.html">anmelden</a> oder <a href= "/index.php?option=com_user&amp;Itemid=112&amp;lang=de&amp;view=register
пройдя второй раз она будет как надо, и нинадо мудрить забубённую регулярку
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
я думаю вариант, двумя регулярками обработать этот движок
я тоже так думал.. просто на всякий случай спросил ... а вдруг ...
пы. сы. спасибо большое всем кто откликнулся
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
тоесть одной, но пройти два раза
Код:
(?<=a\ href[^*<]+").*?regist.*?(?=")
при первом проходе у тебя будет сылка в таком формате
Код:
/Anmelden.html">anmelden</a> oder <a href= "/index.php?option=com_user&amp;Itemid=112&amp;lang=de&amp;view=register
пройдя второй раз она будет как надо, и нинадо мудрить забубённую регулярку
нее .. так не пойдет .. ваша регулярка ..это только когда не сработает эта: (?<=href=").*?regist.*?(?=") далее if если переменная после первой регулярки пустая, то через вашу регулярку .. ибо ваша не цепляет приведенный выше кусок кода вообще
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
нее .. так не пойдет .. ваша регулярка ..это только когда не сработает эта: (?<=href=").*?regist.*?(?=") далее if если переменная после первой регулярки пустая, то через вашу регулярку .. ибо ваша не цепляет приведенный выше кусок кода вообще
эта регулярка тебе вытащит все сылки, как она может не сработать, просто она лишнее берёт
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

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