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

String 如何从这个字符串中提取数字?,string,autoit,String,Autoit,我在flash站点上使用AutoIt,并使用Capture2Text读取其文本。一些If-construct检查某个按钮是否存在。我收到如下文本: XXXXX 0,20 XXXXXXX 0,24 Button12 0,21 XXX X是固定大小的字符。我需要变量中的3个数字。您可以忽略按钮12(也是固定大小)。结果应该是: $Var1 = 0,20 $Var2 = 0,24 $Var3 = 0,21 值介于0,20和900,00(因此没有固定大小)之间,我需要不带空格等获取该值。对于给定类

我在flash站点上使用AutoIt,并使用Capture2Text读取其文本。一些
If
-construct检查某个按钮是否存在。我收到如下文本:

XXXXX 0,20 XXXXXXX 0,24  Button12 0,21 XXX
X
是固定大小的字符。我需要变量中的3个数字。您可以忽略
按钮12
(也是固定大小)。结果应该是:

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

值介于
0,20
900,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

对于给定类型的文本(您的X可以是任何“单词”字符),其工作原理如下:

$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)
#包括
$sText='XXXXX 0,20 XXXXXX 0,24按钮12 0,21 XXX'
$aResult=StringRegExp($sText,“\d{1,3}、\d{2}”,3)
_阵列显示($aResult)

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

只是提供一个替代方案:

#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)
#包括
$sText='XXXXX 0,20 XXXXXX 0,24按钮12 0,21 XXX'
$aResult=StringRegExp($sText,“\d{1,3}、\d{2}”,3)
_阵列显示($aResult)
提取逗号前1到3位、后2位的数字(根据您的描述,有一些,但如果您在模式中省略它们,它也可以工作)。“X”字符串的长度并不重要