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



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


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

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



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

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

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



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

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

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



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



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

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

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

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


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

    Subject: (.+?) Delivered
    

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

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


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

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



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



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


Log in to reply
 

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