Autohotkey:将连接的字符串拆分为字符串和数字

时间:2013-09-26 13:28:46

标签: autohotkey

我正在使用输入框从用户请求具有“sometext5”形式的字符串。我想通过regexp将它分离为字符串组件的变量和数字的变量。然后应该在循环中使用该数字。

以下只返回“0”,即使我输入“itemize5”

形式的字符串
!n::
InputBox, UserEnv, Environment, Please enter an environment!, , 240, 120
If ErrorLevel
    return
Else
    FoundPos := RegExMatch(%UserEnv%, "\d+$")
    MsgBox %FoundPos%
retur

名词

1 个答案:

答案 0 :(得分:1)

    顾名思义,
  1. FoundPos包含针头最左侧出现的位置。 包含您特别想要与正则表达式匹配的任何内容。
  2. 将变量内容传递给函数时,请勿将变量名称括在百分号中(如%UserEnv%)。
  3. 您的正则表达式\d+$只会匹配字符串末尾的数字,而不是之前的文本。
  4. 可能的解决方案:

    myText := "sometext55"
    if( RegExMatch(myText, "(.*?)(\d+)$", splitted) ) {
        msgbox, Text: %splitted1%`nNumber: %splitted2%
    }
    

    docs中所述,splitted将设置为伪数组(splitted1splitted2 ...),每个元素都包含匹配的子模式你的正则表达式(圆括号之间的东西)。