0

我正在使用输入框向用户请求具有“sometext5”形式的字符串。我想通过正则表达式将其分隔为字符串组件的变量和数字的变量。然后将在循环中使用该号码。

以下仅返回“0”,即使我以“itemize5”形式输入字符串

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

n

4

1 回答 1

1
  1. FoundPos,顾名思义,包含针最左边出现的位置。它不包含您特别想与您的正则表达式匹配的任何内容。
  2. 将变量内容传递给函数时,不要用百分号(如%UserEnv%)将变量名括起来。
  3. 您的正则表达式\d+$将仅匹配字符串末尾的数字,而不是其前面的文本。

一个可能的解决方案:

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

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

于 2013-09-26T13:51:21.800 回答