[Вопрос] Парсинг строки до конца - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
[Вопрос] Парсинг строки до конца
zombieserv Дата: Воскресенье, 04.06.2017, 07:33 | Сообщение # 1
Новичок
Сообщений: 13
Статус: Offline
Всем привет.
Вопрос касательно RegExMatch.
У меня есть строка:
[07:18:32] Вы получили СМС от Nick_Name[77](Тел.123456): Текст

Есть регулярное выражение:
"\QВы получили СМС от \E(.*)\Q[\E(.*)]\Q\E(.*)\Q: \E(.*)"

Парсит таким образом:
Out1 = Nick_Name
Out2 = 77
Out3 = (Тел.123456)
Out4 = Тест

Но если я пытаюсь сравнить
if (Out4 == Тест)
То цикл НЕ СООТВЕТСТВУЕТ действительности
А всё потому, что в переменной Out4 не просто "Текст", а конец строки, что-то ещё после "Текст".

А если я изменю (.*) на (.....), то "Текст" сравнивается правильно.
"\QВы получили СМС от \E(.*)\Q[\E(.*)]\Q\E(.*)\Q: \E(.....)"

Вопрос: как спарсить строку до конца?

Я надеюсь, я понятно выразил суть проблемы


Сообщение отредактировал zombieserv - Воскресенье, 04.06.2017, 07:36
Demy Дата: Воскресенье, 04.06.2017, 11:04 | Сообщение # 2
Бывалый
Сообщений: 422
Статус: Offline
Код
U)\E(.*)\Q[\E(.*)]\Q\E(.*)\Q: \E(.*)\R

странные у вас регулярки...


AutoReporter / http://cheat-master.ru/forum/150-486717-1
Finder / http://cheat-master.ru/forum/160-497245-1
DLQ Binder / http://cheat-master.ru/forum/150-594163-1

У ТЕБЯ ЕСТЬ ИДЕЯ ДЛЯ ПРОГРАММЫ, НО САМ ТЫ НЕ МОЖЕШЬ НАПИСАТЬ КОД? ПИШИ МНЕ
zombieserv Дата: Воскресенье, 04.06.2017, 11:08 | Сообщение # 3
Новичок
Сообщений: 13
Статус: Offline
Быдлокод, да? xD
Ну, поправьте, как будет более оптимизировано, я делал просто и прямо
CZAR Дата: Воскресенье, 04.06.2017, 13:14 | Сообщение # 4
Czar Of Scripts
Сообщений: 1373
Статус: Offline
Цитата zombieserv ()
f (Out4 == Тест)

Ну во первых если тебе нужно переменную с текстом сравнить, то нужно текст брать в кавычки
Код

if (out4=="Тест")

Регулярка которую я сделал:
Код
\] Вы получили СМС от (.*)\[([0-9]{1,3})\]\(Тел.([0-9]+)\): (.*)





Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
zombieserv Дата: Воскресенье, 04.06.2017, 14:02 | Сообщение # 5
Новичок
Сообщений: 13
Статус: Offline
Цитата Phoenixxx_Czar ()
Ну во первых если тебе нужно переменную с текстом сравнить, то нужно текст брать в кавычки

Дело не в том, чтобы сравнивать с текстом.
У меня не получается именно парсить текст в конце..
Ну, вот вам пример.
Если я пытаюсь вывести:
%out4%%out1% - то Out1 даже не выведется, т.к. out4 в конце строки и нет ограничения..
Я не знаю, как понятнее объяснить проблему

Добавлено (04.06.2017, 14:00)
---------------------------------------------

Цитата Phoenixxx_Czar ()
Регулярка которую я сделал:

За регулярку спасибо..
Но вопрос до сих пор актуален.

Добавлено (04.06.2017, 14:02)
---------------------------------------------
Я так понимаю, нужно каким-то образом после
Вы получили СМС от (.*)\[([0-9]{1,3})\]\(Тел.([0-9]+)\): (.*)|ВОТ ТУТ|
Обозначить конец строки.
Только как?

Demy Дата: Воскресенье, 04.06.2017, 19:38 | Сообщение # 6
Бывалый
Сообщений: 422
Статус: Offline
рассматривай построчно. Или же \R и жадность включи. Я тебе скидывал конец регулярки, ты ее пробывал?

AutoReporter / http://cheat-master.ru/forum/150-486717-1
Finder / http://cheat-master.ru/forum/160-497245-1
DLQ Binder / http://cheat-master.ru/forum/150-594163-1

У ТЕБЯ ЕСТЬ ИДЕЯ ДЛЯ ПРОГРАММЫ, НО САМ ТЫ НЕ МОЖЕШЬ НАПИСАТЬ КОД? ПИШИ МНЕ
zombieserv Дата: Четверг, 13.07.2017, 03:46 | Сообщение # 7
Новичок
Сообщений: 13
Статус: Offline
Цитата Demy ()
рассматривай построчно. Или же \R и жадность включи. Я тебе скидывал конец регулярки, ты ее пробывал?

Извиняюсь за весьма долгий ответ: сессия завалила.
Нет, это не помогло.
Что-то мешает сравнить переменную в конце.
CZAR Дата: Четверг, 13.07.2017, 15:25 | Сообщение # 8
Czar Of Scripts
Сообщений: 1373
Статус: Offline
zombieserv, del (забыл что писал уже свою регулярку :D)
Ты тести не в проге, а в игре. В проге косяки бывают.





Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019


Сообщение отредактировал Phoenixxx_Czar - Четверг, 13.07.2017, 15:28
tumkin Дата: Пятница, 14.07.2017, 10:47 | Сообщение # 9
Tumkin Project
Сообщений: 1186
Статус: Offline
Что := Trim(Что, "`r`n`t ")
обрезает с двух сторон Что "невидимые" символы.


Coockie Дата: Пятница, 14.07.2017, 19:14 | Сообщение # 10
Новичок
Сообщений: 27
Статус: Offline
RegExMatch(var, "^\[\d{2}:\d{2}:\d{2}\]\sВы\sполучили\sСМС\sот\s(\w+)\[(\d{1,3})\]\(Тел\.(\d{6})\):\s(.*)$", match)
match1 - ник
match2 - ид
match3 - телефон
match4 - текст


Сообщение отредактировал Coockie - Пятница, 14.07.2017, 23:13
MrGPro Дата: Пятница, 21.07.2017, 10:18 | Сообщение # 11
Боец
Сообщений: 202
Статус: Offline
global StringChat = "[07:18:32] Вы получили СМС от Nick_Name[77](Тел.123456): Текст"
RegExMatch(StringChat, "^\[\d{2}:\d{2}:\d{2}\]\sВы\sполучили\sСМС\sот\s(?<Nick>\w+)\[(?<ID>\d{1,3})\]\(Тел\.(?<Phone>\d{6})\):\s(?<Msg>.*)$", match)
MsgBox, % "Ник: " matchNick . "`nID: " . matchID . "`nТел: " . matchPhone . "`nСМС:" . matchMsg


Тебе помогли не забывай про благодарность >> тыкни репутацию
---------------------------------------͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏ -----------------------------------------------------
Зам.Администратора на проекте "DayZ Epoсh SPN" сервер Arma 2OA DayZ Epoch пиратка и лицензия
tumkin Дата: Пятница, 21.07.2017, 21:10 | Сообщение # 12
Tumkin Project
Сообщений: 1186
Статус: Offline
Цитата Coockie ()
RegExMatch(var, "^\[\d{2}:\d{2}:\d{2}\]\sВы\sполучили\sСМС\sот\s(\w+)\[(\d{1,3})\]\(Тел\.(\d{6})\):\s(.*)$", match)

Цитата MrGPro ()
RegExMatch(StringChat, "^\[\d{2}:\d{2}:\d{2}\]\sВы\sполучили\sСМС\sот\s(?<Nick>\w+)\[(?<ID>\d{1,3})\]\(Тел\.(?<Phone>\d{6})\):\s(?<Msg>.*)$", match)

Жесткие у вас регулярки пацаны.

Регулярка:
Код
^\[\d+:\d+:\d+\] Вы получили СМС от ([A-z0-9_]+)\[(\d+)\]\(Тел\.(\d+)\): (.*)$

На выходе
Match[1]: Nick_Name
Match[2]: 77
Match[3]: 123456
Match[4]: Текст


  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума