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

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

blud

Client
Регистрация
19.04.2011
Сообщения
657
Реакции
77
Баллы
28
сразу, чтоб не пинали: я в регулярках нуб(все времени нету освоить)
итак: нужно выпарсить из нтмл ссыль на регу: перед текстом должно идти a href=", с этим все понятно а вот далее, что то я застрял, заканчиваться текст должен: registers после которого могут идти любые символы, буквы, цифры(кроме пробелов) после текста идет: "
если кто знает и кому не сложно ответить .. плиз... а то работа встала
 
Попробуй такую регулярку:
(?<=a\ href=").*?registers.*?(?=")
 
  • Оценить
Реакции: blud
вот столкнулся сейчас с таким: <a href = "http (обратите внимание на пробелы перед и после знака равно) ..
как исправить вышеуказанную регулярку, что бы парсило и с пробелами и без??? заранее спасибо
 
Так попробуй:
Код:
Развернуть Свернуть Копировать
(?<=").*?registers.*?(?=")
нужно выпарсить из нтмл ссыль на регу
Не пойму, а что ссылка на регистрацию всегда разная?
 
Так попробуй:
Код:
Развернуть Свернуть Копировать
(?<=").*?registers.*?(?=")

Не пойму, а что ссылка на регистрацию всегда разная?
это база сайтов.. на одном движке .. но кастомизация .. матьее
 
(?<=a\ href(\ |)=").*?registers.*?(?=")
 
Так попробуй:
Код:
Развернуть Свернуть Копировать
(?<=").*?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>
 
Потому что меняется не только
вот столкнулся сейчас с таким: <a href = "http (обратите внимание на пробелы перед и после знака равно) ..
а еще "registers", во втором случае register (без "s" на конце).
Можно так, если конечно не попадется еще каких-то вариантов ссылок:
Код:
Развернуть Свернуть Копировать
((?<=a\ href=").*?registers.*?(?="))|((?<=a\ href\ =\ ").*?register.*?(?="))
 
Потому что меняется не только
а еще "registers", во втором случае register (без "s" на конце).
там попадаются и registers и register и registration... у меня в регулярке этот фрагмент такой: regist.*?(?=")
 
там попадаются и registers и register и registration... у меня в регулярке этот фрагмент такой: regist.*?(?=")
Ну тогда:
Код:
Развернуть Свернуть Копировать
(?<=a\ href(\ |)=(\ |)").*?regist.*?(?=")
 
Ну тогда:
Код:
Развернуть Свернуть Копировать
(?<=a\ href(\ |)=(\ |)").*?regist.*?(?=")
не подходит ... цепляет ссылку на логин... результат регулярки по вышеуказаному фрагменту:
Код:
Развернуть Свернуть Копировать
/Anmelden.html">anmelden</a> oder <a href = "/index.php?option=com_user&amp;Itemid=112&amp;lang=de&amp;view=register
 
не подходит ... цепляет ссылку на логин... результат регулярки по вышеуказаному фрагменту:
Код:
Развернуть Свернуть Копировать
/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"?
 
Код:
Развернуть Свернуть Копировать
(?<=\w\s<a\ href(\ |)=(\ |)").*?regist.*?(?=")
 
  • Оценить
Реакции: blud
спасибо .. помогло
можешь так ещё заменить
Код:
Развернуть Свернуть Копировать
(?<=\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
можешь так ещё заменить
Код:
Развернуть Свернуть Копировать
(?<=\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# сделать
 
а если еще усложнить:
Код:
Развернуть Свернуть Копировать
<span class="kprofilebox-register">
                            <a href="/index.php/shop-login?view=registration" rel="nofollow">Create an account</a>
                        </span>
такое эта: (?<=\w\s<a\ href[^*<]+").*?regist.*?(?=") регулярка уже не парсит
пы.сы .. да .. это куски кода с одного и того же движка
 
а если еще усложнить:
Код:
Развернуть Свернуть Копировать
<span class="kprofilebox-register">
                            <a href="/index.php/shop-login?view=registration" rel="nofollow">Create an account</a>
                        </span>
такое эта: (?<=\w\s<a\ href[^*<]+").*?regist.*?(?=") регулярка уже не парсит
пы.сы .. да .. это куски кода с одного и того же движка
я думаю вариант, двумя регулярками обработать этот движок
 
тоесть одной, но пройти два раза
Код:
Развернуть Свернуть Копировать
(?<=a\ href[^*<]+").*?regist.*?(?=")
при первом проходе у тебя будет сылка в таком формате
Код:
Развернуть Свернуть Копировать
/Anmelden.html">anmelden</a> oder <a href= "/index.php?option=com_user&amp;Itemid=112&amp;lang=de&amp;view=register
пройдя второй раз она будет как надо, и нинадо мудрить забубённую регулярку
 
я думаю вариант, двумя регулярками обработать этот движок
я тоже так думал.. просто на всякий случай спросил ... а вдруг ...
пы. сы. спасибо большое всем кто откликнулся
 
тоесть одной, но пройти два раза
Код:
Развернуть Свернуть Копировать
(?<=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 если переменная после первой регулярки пустая, то через вашу регулярку .. ибо ваша не цепляет приведенный выше кусок кода вообще
 
нее .. так не пойдет .. ваша регулярка ..это только когда не сработает эта: (?<=href=").*?regist.*?(?=") далее if если переменная после первой регулярки пустая, то через вашу регулярку .. ибо ваша не цепляет приведенный выше кусок кода вообще
эта регулярка тебе вытащит все сылки, как она может не сработать, просто она лишнее берёт
 
эта регулярка тебе вытащит все сылки, как она может не сработать, просто она лишнее берёт
UjUaSlt.png


LAZQX69.png
 

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