1

Тема: AHK: Выделить ключ из текста с помощью регулярного выражения

Нужно среди огромной кучи лишнего текста выделить ключ, вида XXXXX-YYYYY-ZZZZZ. Подскажите, кто знает.

Модератор: Заголовок "AHK: RegExMatch()" исправлен на вменяемый. В следующий раз делайте это самостоятельно.

2

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Text =
(
БЛАБЛА
БЛАБЛА XXXXX-YYYYY-ZZZZZ БЛАБЛА
БЛАБЛА
)
MsgBox % RegExReplace(Text, "s).*?(\w{5}-\w{5}-\w{5}).*", "$1")

3

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Flasher, если в ключе будет кириллица, то ваш код не подойдет.

4

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Malcev
Пример ключа в кириллице приведите. Я таких что-то не припомню.
Да и латинские 'XYZ' как бы намекают, что там не про неё.

5

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Я тоже не припоминаю, но в принципе-то они могут быть.
Просто предупредил топикстартера.

6 (изменено: teadrinker, 2017-03-21 00:01:51)

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Malcev пишет:

Flasher, если в ключе будет кириллица, то ваш код не подойдет.

Да не, и без того не подойдёт. smile

Text := "БЛАБЛА`r`nБЛАБЛА XXXXX-YYYYY-ZZZZZ БЛАБЛА`r`nБЛАБЛА"

MsgBox % RegExReplace(Text, ".*?(\w{5}-\w{5}-\w{5}).*", "$1")

Правильно так:

Text =
(
БЛАБЛА
БЛАБЛА АБВГД-ЕЁЖЗИ-КЛМНО БЛАБЛА
БЛАБЛА
)
MsgBox % RegExReplace(Text, "s)(*UCP).*?(\w{5}-\w{5}-\w{5}).*", "$1")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

7

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Насчёт s) согласен, насчёт кириллицы по-прежнему - нет.
АБВГД-ЕЁЖЗИ-КЛМНО - это не ключ, а скорее отсебятина.
Если так мыслить, то логично было бы и кучу юникодных символов учесть, а то и там не подходит:

Text := "БЛАБЛА`r`nБЛАБЛА ˬʼˮª²-³º¼½¾-ǀǁǂǃʹ XXXXX-YYYYY-ZZZZZ БЛАБЛА`r`nБЛАБЛА"
MsgBox % RegExReplace(Text, "s)(*UCP).*?(\w{5}-\w{5}-\w{5}).*", "$1")

Только убрав (*UCP), выдаст XXXXX-YYYYY-ZZZZZ.

8

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

В смысле, мой код неправильный, потому что учитывает кириллицу?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

9

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Разве то, что я привёл в коде вместо ключа, похоже на кириллицу?

10

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

А, так он неправильный, потому что не учитывает то, что ты привёл? smile

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

11

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Как раз учитывает. Кучу ненужного. В отличии от моего. Выше привёл уточнение.

12

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

А, понял. Он неправильный, потому что учитывает кириллицу, но не учитывает то, что ты привёл. В отличие от твоего, который учитывает то, что надо, но, правда, не работает, поскольку не учитывает переносы строк. Теперь всё верно?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

13

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

teadrinker пишет:

но не учитывает то, что ты привёл.

>>>

Flasher пишет:

Как раз учитывает. Кучу ненужного.

Почему так трудно просто проверить? Он учитывает и кириллицу и кучу всякого другого, отличного от букв и цифр, включая приведённое мной.
Перенос строк мой учитывает (см. согласие выше).

14

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Flasher пишет:

Перенос строк мой учитывает

Да нет, он вдруг стал учитывать после моей подсказки. И без сообщения о редактировании.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

15

Re: AHK: Выделить ключ из текста с помощью регулярного выражения

Т.е. "Да нет"? Стал (до публикации 7-го поста), значит, учитывает. А то, что с подсказки, написано в скобках. Или слово "согласие" требует дополнительного разжёвывания? o_0