如何从这个字符串中提取数字?

How to extract numbers from this string?

我在 Flash 站点上使用 AutoIt,并使用 Capture2Text 读取其文本。一些 If -构造检查某个按钮是否存在。我收到这样的文字:

XXXXX 0,20 XXXXXXX 0,24  Button12 0,21 XXX

X 是固定大小的字符。我需要变量中的 3 个数字。您可以忽略 Button12 (也是固定大小)。结果应该是:

$Var1 = 0,20
$Var2 = 0,24
$Var3 = 0,21

值介于 0,20900,00 之间(因此没有固定大小),我需要在没有空格等的情况下获取它。

对于给定的文本类型(您的 X 可以是任何 "word" 个字符),它的工作原理是:

$sText = 'XXXXX 0,20 XXXXXXX 0,24 Button12 0,21 XXX'

$aMatch = StringRegExp($sText, '\w+\s(\d+,\d+)\s\w+\s(\d+,\d+)\s\w+\s(\d+,\d+)', 3)
If Not @error Then
    For $i = 0 To UBound($aMatch) -1
        ConsoleWrite('Var ' & $i+1 & ': ' & $aMatch[$i] & @CRLF)
    Next
EndIf

只是提供一个替代方案:

#include <array.au3>
$sText = 'XXXXX 0,20 XXXXXXX 0,24 Button12 0,21 XXX'
$aResult=StringRegExp($sText, " \d{1,3},\d{2} ",3)
_ArrayDisplay($aResult)

提取逗号前 1 到 3 位数字和逗号后 2 位数字的数字(根据您的描述,有一些,但如果您在模式中省略它们,它也有效)。 "X" 字符串的长度无关紧要。