使用正则表达式过滤字符串

时间:2018-04-03 07:32:22

标签: regex autoit

我尝试了以下代码。但是,结果不是我想要的。

$strLine = "100.11 Q9"
$sortString = StringRegExp ($strLine,'([0-9\.]{1,7})', $STR_REGEXPARRAYMATCH)
MsgBox(0, "", $sortString[0],2)

输出显示100.11,但我想要100.11 9。如何使用正则表达式以这种方式显示它?

1 个答案:

答案 0 :(得分:0)

$sPattern = "([0-9\.]+)\sQ(\d+)"

$strLine = "100.11 Q9"
$sortString = StringRegExpReplace($strLine, $sPattern, '\1 \2')
MsgBox(0, "$sortString", $sortString, 2)

$strLine = "100.11 Q9"
$sortString = StringRegExp($strLine, $sPattern, 3); array of global matches.
For $i1 = 0 To UBound($sortString) -1
    MsgBox(0, "$sortString[" & $i1 & "]", $sortString[$i1], 2)
Next

模式是让2组成为100.119

模式将首先匹配任何数字和点的组,直到达到 /s将匹配空间。然后它将与Q匹配。第二组 匹配任何剩余的数字。

StringRegExpReplace用第1组和第2组替换整个字符串 与空间分开。

StringRegExp将2组作为2个数组元素。

从您喜欢的2种类型的正则表达式中选择1。