Помогите с регуляркой



  • @GamiD https://learn.javascript.ru тут все доступно



  • Есть у кого-нибудь опыт создания фильтра стоп(мат)-слов? Я сделал по статье https://habrahabr.ru/post/101232/ , но мне кажется это далеко не очень оптимально. Может поделитись опытом если есть. :) Я вот думаю может сначала проверяемую фразу разбить на слова, затем каждое слово с помощью рег.в. нормализовать, то есть исправить транслит и т.п. на кириллицу а затем уже просто проверять по словарю? Морфологическим аналазом я точно не собирасюь заниматься, надо что-то более менее оптимальное.



  • @Denis_krsk бесполезное занятие.. совсем бесполезное.. особенно для ру сегмента. одно только слово с забора можно парой сотен вариаций написать, а если пилить под него регулярку то, то зарежешь и добрую часть литературного языка


  • administrators

    @Denis_krsk Соглашусь с @artihorror , заштрихуй, ослаблять, и т.п. Плюс можно использовать цифры, знаки..



  • @Fox У меня бот постит комменты в сетях. Но комменты пишет заказчик. Бывают пишут оскорбительные и т.п. И дабы не попасть под жалобы жертв и УК РФ нужно таки их отсевать. Сделал пока по статье с хабра. Посмотрим..


  • administrators

    @Denis_krsk УК РФ

    Статья 20.1. Мелкое хулиганство
    [Кодекс РФ об административных правонарушениях] [Глава 20] [Статья 20.1]

    1. Мелкое хулиганство, то есть нарушение общественного порядка, выражающее явное неуважение к >обществу, сопровождающееся нецензурной бранью в общественных местах, оскорбительным >приставанием к гражданам, а равно уничтожением или повреждением чужого имущества, -

    влечет наложение административного штрафа в размере от пятисот до одной тысячи рублей или >административный арест на срок до пятнадцати суток.

    1. Те же действия, сопряженные с неповиновением законному требованию представителя власти либо >иного лица, исполняющего обязанности по охране общественного порядка или пресекающего >нарушение общественного порядка, -

    влекут наложение административного штрафа в размере от одной тысячи до двух тысяч пятисот рублей >или административный арест на срок до пятнадцати суток.

    А против жалоб ни какой фильтр не поможет. Идеальный вариант, на мой взгляд, это переложить ответственность на зазчика через лицензионное соглашение например.



  • @Fox Ладно хулиганство, сейчас за лайк или репост могут под экстремизм подвести :((



  • @Fox said in Помогите с регуляркой:

    Идеальный вариант, на мой взгляд, это переложить ответственность на зазчика через лицензионное соглашение например.

    +1



  • @Denis_krsk said in Помогите с регуляркой:

    @Fox Ладно хулиганство, сейчас за лайк или репост могут под экстремизм подвести :((

    @Fox said in Помогите с регуляркой:

    Идеальный вариант, на мой взгляд, это переложить ответственность на зазчика через лицензионное соглашение например.

    Спокойно!



  • @Antonio https://news.vse42.ru/feed/show/id/27795228 2,5 года за репост :))



  • @Denis_krsk @Antonio @Fox

    Опять проблема с регуляркой все способы который знаю попробовал
    Не могу вывести название темы из imap письма делаю "Получить сообщение"
    из полученного сообщения беру 200 символов [[MAIL_BODY]].slice(0,200) чтобы все лишнее не попадалось в notepad+ так работает
    0_1518888895197_1.JPG
    Делаю через "Выполнить код"

    Так работает 
    var str = 'From: Yandex <no-reply@Yandex.ru> To: "puma@gmail.com" <puma@gmail.com> Subject: Need For Speed Payback  Delivered-To: gamid@gmail.com Received: by 192.168.1.1 with SMTP'.replace(/.*Subject[:](.*)Delivered[-]To[:].*/g, '$1');
    [[GROUP1]] = str
    
    А так нет
    var str = [[GROUP1]].replace(/.*Subject[:](.*)Delivered[-]To[:].*/g, '$1');
    [[GROUP1]] = str
    

    Вот сам текст

    From: Yandex <no-reply@Yandex.ru> To: "puma@gmail.com" <puma@gmail.com> Subject: Need For Speed Payback  Delivered-To: gamid@gmail.com Received: by 192.168.1.1 with SMTP
    

  • administrators

    @GamiD Зачем использовать .replace?
    Странный код, огород.. Но у меня нормально сработал.

    Ведь можно использовать экшен первое вхождение, он выдаёт нужный результат с твоей регуляркой.
    Смотри, вот примерный проект.


  • administrators

    @GamiD Так, смотри, твоя регулярка:

    .*Subject[:](.*)Delivered[-]To[:].*
    

    Любой символ с жадным алгоритмом .* нужны, чтобы заменить ненужную информацию перед регуляркой и после, но зачем использовать диапазоны с одним значением? [:] [-] [:]



  • @GamiD тебе @Fox правильно сказал. Зачем замена?
    Регулярка с первым вхождением даёт точный ответ

    (?<=Subject: ).*?(?=  Delivered-To:)
    

    Всё что между скобками - то, что ты хотел.



  • @Fox @Xstroy Спасибо вам оказалось вся проблема в переносе строки "\n" Fox открыл твой проект все работает даже мой вариант работает все варианты из твоего проекта ставлю в мой ни один не работает потом увидел что там есть перенос строки и решил убрать и заработал и мой вариант и все варианты тоже еще раз спасибо не певрый раз уже выручаешь



  • @Fox @Xstroy Я привык с такими регулировками работать

    .*Subject[:](.*)Delivered[-]To[:].*
    

    вот этот вариант не понял

    (?<=Subject: ).*?(?=  Delivered-To:)
    

  • administrators

    @GamiD В примерном проекте я дал такую регулярку:

    Subject: (.+?) Delivered
    

    Я привык с такими регулировками работать

    Символы в квадратных скобках это диапазон, диапазон с одним символом это лишний шаг для нахождения данных.


    вот этот вариант не понял

    @Xstroy Использовал группы с утверждениями, (?<=) назад смотрящая группа, смотрит что идёт после "Subject: ", а (?=) соответственно вперёд смотрящая, смотрит что идёт перед " Delivered-To:"


  • administrators

    По регулярным выражениям есть хорошая статья, в ней же есть хорошая шпаргалка:
    alt text



  • @Fox эту картинку на английском видел и ничего не понял спасибо прочитаю статью что там да как