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

Filter a string using regular expression

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

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

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

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

$strLine = "100.11 Q9"
$sortString = StringRegExpReplace($strLine, $sPattern, ' ')
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 将匹配 space。然后它将匹配 Q。第二组 匹配任何剩余的数字。

StringRegExpReplace 用第 1 组和第 2 组替换整个字符串 用 space 分隔。

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

从上面的2种正则表达式中选择一种你喜欢的。