Верная регулярка
-
Подскажите более подходящую регулярку. Сейчас она выглядет так:
"([a-z0-9]+.[net|co|io|ca|gq|fr|su|ml|ga|cf|eu|ru|es|in|pro|it|de]{2,3})"
Задача, собирать только эти домены:
"randomdomen.com" "randomdomen.fr" "randomdomen.eu" "randomdomen.it" "randomdomen.ga" "randomdomen.gq" "randomdomen.ml" "randomdomen.cf" "randomdomen.net" "randomdomen.es" "randomdomen.ru" "randomdomen.la" "randomdomen.de" "randomdomen.co" "randomdomen.in" "randomdomen.ir" "randomdomen.nl" "randomdomen.su" "randomdomen.pro"
Если вместо квадратных скобок прописать обычные, то конструкция перестаёт работать.
-
@Revers А смысл изменять то, что и так работает?
-
@Revers Для таких как ты, сделали специальный сайт для создания регулярок (https://bablosoft.github.io/RegexpConstructor)
Вот твоя измененная регулярка"([\s\S]+\.(?:com|fr|eu|it|ga|gq|ml|cf|net|es|ru|la|de|co|in|ir|nl|su|pro))"
-
-
-
@DoobGuy Я не могу понять их принцип работы, поэтому через генератор регулярок постоянно выходит не то что нужно. Только наизусть шаблоны запоминать, единственный выход пока что.
-
This post is deleted!
-
This post is deleted!
-
@Fox said in Верная регулярка:
@Revers А смысл изменять то, что и так работает?
Берутся не только нужные домены, но и те, которые граббить нельзя:
"randomdomen.us" "randomdomen.org" "randomdomen.me" "randomdomen.fun" "randomdomen.red" "randomdomen.top"
-
@Revers said in Верная регулярка:
@Fox said in Верная регулярка:
@Revers А смысл изменять то, что и так работает?
Берутся не только нужные домены, но и те, которые граббить нельзя:
"randomdomen.us" "randomdomen.org" "randomdomen.me" "randomdomen.fun" "randomdomen.red" "randomdomen.top"
Тогда оформите нормально вопрос, какой текст есть изначально, какие сайты с какими доменами нужно спарсить, а какие ни в коем случае нельзя
-
@Revers Можно вообще без регулярки
[[DOMAINS_ALLOW]] = { ru: 1, com: 1, kz: 1, } [[DOMAIN]] = 'site.com' if ([[DOMAINS_ALLOW]][ [[DOMAIN]].split('.').pop() ] ){ log([[DOMAIN]] + ' домен разрешен') } else { log([[DOMAIN]] + ' домен не разрешен') } [[DOMAIN]] = 'site.biz' if ([[DOMAINS_ALLOW]][ [[DOMAIN]].split('.').pop() ] ){ log([[DOMAIN]] + ' домен разрешен') } else { log([[DOMAIN]] + ' домен не разрешен') }
-
@UserTrue said in Верная регулярка:
@Revers Можно вообще без регулярки
[[DOMAINS_ALLOW]] = { ru: 1, com: 1, kz: 1, } [[DOMAIN]] = 'site.com' if ([[DOMAINS_ALLOW]][ [[DOMAIN]].split('.').pop() ] ){ log([[DOMAIN]] + ' домен разрешен') } else { log([[DOMAIN]] + ' домен не разрешен') } [[DOMAIN]] = 'site.biz' if ([[DOMAINS_ALLOW]][ [[DOMAIN]].split('.').pop() ] ){ log([[DOMAIN]] + ' домен разрешен') } else { log([[DOMAIN]] + ' домен не разрешен') }
Можно и без объекта, создать массив разрешённых доменов и сравнивать через тот же indexOf(). Я думаю топикастер использует именно регулярки, потому что он парсит ссылки из исходного, большого текста и задача состоит именно в том, что бы спарсить ссылки только с необходимыми доменами
-
@Fox объект быстрей работает просто, там поиск по хэшу, а не перебором. Для сортированого массива можно бинарный поиск написать, но из коробки такого нет.
-
@UserTrue said in Верная регулярка:
@Fox объект быстрей работает просто, там поиск по хэшу, а не перебором. Для сортированого массива можно бинарный поиск написать, но из коробки такого нет.
Сомневаюсь, что в массиве будет достаточно данных доменов, что бы была заметна разница
:D