Проблема с переносами строк



  • У меня есть такой текст в переменной:

    You may be asked to enter this confirmation code:

    17299

    Мне нужно спарсить 17299. Я воспользовался конструктором регулярных выражений, но он как-то неправильно работает, если в тексте есть переносы строк. Он мне выдал результат:
    You may be asked to enter this confirmation code:(.+)
    Но эта регулярка ни в БАС не работает, ни при проверке в самом конструкторе. Потом я пытался и так
    You may be asked to enter this confirmation code:[\s\S]+?(.+)
    и так
    You may be asked to enter this confirmation code:\s(.+)
    и так
    You may be asked to enter this confirmation code:\n(.+)
    Последние регулярки в конструкторе работают, но в БАС ни в какую. В чем может быть проблема, не пойму. Помогите плиз.


  • administrators

    @lev

    Самый простой способ решить проблему \d+ - любая последовательность цифр.

    You may be asked to enter this confirmation code:(.+) не работает, потому что по стандарту .+ не может содержать символы переноса строки.

    Это можно исправить заменив .+ на (?:.|\n)+

    Но You may be asked to enter this confirmation code:((?:.|\n)+) будет получать число вместе с предыдущими пробелами.

    Вот самый правильный вариант

    You may be asked to enter this confirmation code:\s+((?:.|\n)+)



  • @support Да, так работает, спасибо.



  • @support said in Проблема с переносами строк:

    (?:.|\n)

    Регулярка (<div>.+<br>(?:.|\n)<a\ href="read-sms.php?phone=\d{7,15}?")
    Работает в конструкторе и не работает в BASe
    Код страницы 0_1496582596717_saved_content



  • @Viktor В конструкторе тоже не работает твоя регулярка. Что нужно в итоговом варианте?



  • @Viktor Походу тебе в итоге нужно получить название страны и телефон?



  • @Viktor Чтобы получить название страны и номер телефона, используй регулярку:

    <div>.*?<br>\s<a href="read-sms\.php\?phone=\d*?"
    

    Затем в выполнить код:

    VAR_2 = (VAR_1).replace(/<div>(.*?)<br>\s<a href="read-sms\.php\?phone=(\d*?)"/g, 'Страна: $1, номер: $2');
    


  • @Fox Спасибо, работает, но только в конструкторе. В БАСе также ничего не извлекает
    0_1496656342672_akkvk=massreger.xml



  • @Viktor Понятно, сработает вот так:

    <div>.*?<br>\s*?<a href="read-sms\.php\?phone=\d*?"
    

    Затем в выполнить код:

    VAR_2 = (VAR_1).replace(/<div>.*?<br>\s*?<a href="read-sms\.php\?phone=\d*?"/g, 'Страна: $1, номер: $2');
    

    А зачем ты сперва загружаешь страницу, а потом используешь get-запрос на неё же?



  • @Fox я ж ее разрабатываю только :) посмотреть, что там, "руками потрогать" )



  • @Fox said in Проблема с переносами строк:

    <div>.?<br>\s?<a href="read-sms.php?phone=\d*?"

    ага, понял принцип. Рандомное количество пробелов, ясно. Спасибо.



  • @Viktor \s - означает пробелы (включая переносы строки), * - означает захватить максимально возможно пробелов (жадный алгоритм), ? - означает остановится сразу, как будет найден следующий символ "<" (не жадный алгоритм).
    Так же получение имён и фамилий на сайте. Можно отправлять post-запросы на сайт и сразу же получать ответ. Хотя в разы проще тупо отдельным проектом зациклить и получить сразу несколько тысяч Имён и Фамилий, сохранить его в текстовый документ и использовать в регере через ресурс.



  • @Fox отличная мысль насчет нескольких тыщ, хотя с post-запросами скорее никак, чем как-нибудь



  • @Fox это вообще здравая мысль получать акки вк с нескольких десятков бесплатных смсочниц? По кругу гоняя запросы к ним в ожидании свежего номерка?



  • @Viktor А почему нет? Только у тебя вскоре вк начнёт запрашивать капчу..



  • @Fox почему? Я ж регистрируюсь все время с разных айпи..



  • @Fox да боюсь, что меня опередили и номера я не дождусь..или там бешеная конкуренция, и номер будет редко..


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.