Верная регулярка



  • Подскажите более подходящую регулярку. Сейчас она выглядет так:

    "([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 said in Верная регулярка:

    специальный сайт

    Ого, спасибо!



  • @IvanM said in Верная регулярка:

    @DoobGuy said in Верная регулярка:

    специальный сайт

    Ого, спасибо!

    e874a749-db68-4ef0-b26b-f07348462a17-изображение.png



  • @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


Log in to reply
 

  • 11
  • 11
  • 11
  • 30
  • 6
  • 14
  • 4
  • 7