Помогите с регуляркой
-
Опять проблема с регуляркой все способы который знаю попробовал
Не могу вывести название темы из imap письма делаю "Получить сообщение"
из полученного сообщения беру 200 символов [[MAIL_BODY]].slice(0,200) чтобы все лишнее не попадалось в notepad+ так работает
Делаю через "Выполнить код"Так работает 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:"
-
По регулярным выражениям есть хорошая статья, в ней же есть хорошая шпаргалка:
-
@Fox эту картинку на английском видел и ничего не понял спасибо прочитаю статью что там да как