Помощь AHK относительно RegExReplace - PullRequest
0 голосов
/ 05 декабря 2018

Мне нужна помощь с RegExReplace в AHK.

Я хочу, чтобы мой скрипт выполнял поиск текста и сохранял только цифры после знака $.

Сейчас у меня есть:

F1::

 Clipboard = 

 SendInput, ^c

ClipWait

Variable := Clipboard

NewVar :=   RegExReplace(Variable,"[^.0-9]+", "{+}")

send % NewVar

return

Например, если текст "unit $400 unit 500 $400" Я получаю 400+500+400+

То, что я хотел бы получить, это "400+400+ "

Я не смог выяснить, как исключить числа, которыеу меня нет $, и я не уверен, что RegEx - это лучшее, что можно использовать здесь.

Любая помощь будет отличной!

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Это финальная версия, которая делает то, что мне нужно.Спасибо всем за советы !!!

F1::        
Clipboard = 
 SendInput, ^c
ClipWait
Pos := 1
While Pos {
    Pos:=RegExMatch( Clipboard, "\$(\d+(?:\.\d+)?)", M, Pos+StrLen(M1) )
    Match%A_Index% := M1 
    M2  := M2 Match%A_Index% "{+}"
}
Send % "=sum(" M2 
Send    {BS}{BS}){enter}
M2 :=
return
0 голосов
/ 07 декабря 2018

Я не знаю, как это сделать с RegExReplace, но я могу предложить пример использования функции RegExMatch.
К сожалению, AutoHotkey не поддерживает флаг /g/ для глобального поиска,поэтому вы должны использовать цикл для поиска всех значений, которые вам нужны.

#NoEnv
SendMode Input

F1::
    Clipboard = 
    SendInput, ^c
    ClipWait
    i := 1
    while pos := RegExMatch(Clipboard, "\$(\d+)", match, i)
    {
        i += pos
        sendinput % match1 "{+}"
    }
    ; sendinput {backspace} ; uncomment this line if you want the last PLUS character to be removed
return
...