1

Тема: AutoHotkey: используем регулярные выражения

Разбор текста вида "text1:text2" (логин и пароль).

f4::
send, ^{vk43}
Source=%clipboard%
ACC=^[^:]+
PASS=[^:]+$
RegExMatch(Source, ACC, Found)
RegExMatch(Source, PASS, Found1)
return
f5::
send, %Found%
return
f6::
send, %Found1%
return

При нажатии F4 скрипт копирует в буфер обмена выделенный в данный момент текст (посылая Ctrl+C) и разбирает его.
При нажатии F5 скрипт печатает найденный логин, при нажатии F6 - найденный пароль.
Автор примера - YMP

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

2

Re: AutoHotkey: используем регулярные выражения

Ещё три способа разбора текста вида "text1:text2" (логин и пароль). В момент запуска примера текст должен находиться в буфере.

; MyAccount:MyPassword

; 1.
intPos := InStr(Clipboard, ":")

IfEqual, intPos, 0
    MsgBox, , Method 1, Clipboard data:`n`r%Clipboard%`n`rnot contain [Account:Password] form.
Else
{
    strAccount  := SubStr(Clipboard, 1, intPos - 1)
    strPassword := SubStr(Clipboard, intPos + 1)
    MsgBox, , Method 1, Account: %strAccount%`n`rPassword: %strPassword%
}


; 2.  - не проверяем форму
Loop, Parse, Clipboard, :
{
    MsgBox, , Method 2, %A_LoopField%
}


; 3.
intPos := RegExMatch(Clipboard, "^(.*?):(.*)$", strSubMatch)

IfEqual, intPos, 0
    MsgBox, , Method 3, Clipboard data:`n`r%Clipboard%`n`rnot contain [Account:Password] form.
Else
{
    strAccount  := strSubMatch1
    strPassword := strSubMatch2
    MsgBox, , Method 3, Account: %strAccount%`n`rPassword: %strPassword%
}

Автор примера - alexii

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

3

Re: AutoHotkey: используем регулярные выражения

Поиск слова в тексте буфера обмена, находящегося после другого, указанного слова.

Source:=Clipboard
Found:=RegExMatch(Source, "U)(?:\s|\R|^)хххххх:\s+(.+)(?:\s|\R|$)", Match)
If Found
  MsgBox, %Match1%
Else
  MsgBox, Не найдено.

В данном случае указанное слово - "хххххх:". Если в момент запуска примера в буфере будет находиться текст наподобие следующего:

блаблаблаблаблаблаблаблаблаблаблабла
блаблабла хххххх: нужное блабла
блаблаблаблаблаблаблаблаблаблаблабла

пример разыщет слово "нужное".
Автор примера - YMP.

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

4

Re: AutoHotkey: используем регулярные выражения

Ещё один способ разбора текста вида "text1:text2" (логин и пароль). В момент запуска примера текст должен находиться в буфере обмена.

StringReplace, String, clipboard, :, ©
StringSplit, word_array, String, ©
MsgBox, ACC = %word_array1% PASS = %word_array2%

Автор примера — Androgen.