AHK关于RegExReplace的帮助

时间:2018-12-05 14:49:42

标签: regex autohotkey

我需要AHK的RegExReplace的帮助。

我希望我的脚本搜索文本并仅在$符号后保留数字。

现在我有:

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 :(得分:0)

我不知道如何使用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

答案 1 :(得分:0)

这是最终版本,可以满足我的需求。谢谢大家的指教!!

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