Проблема с переносами строк
-
У меня есть такой текст в переменной:
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(.+)
Последние регулярки в конструкторе работают, но в БАС ни в какую. В чем может быть проблема, не пойму. Помогите плиз.
-
Самый простой способ решить проблему
\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 да боюсь, что меня опередили и номера я не дождусь..или там бешеная конкуренция, и номер будет редко..