使用正则表达式过滤字符串
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.11
和 9
。
该模式将首先匹配具有任何数字和点的组,直到它到达
/s
将匹配 space。然后它将匹配 Q
。第二组
匹配任何剩余的数字。
StringRegExpReplace
用第 1 组和第 2 组替换整个字符串
用 space 分隔。
StringRegExp
将 2 个组作为 2 个数组元素。
从上面的2种正则表达式中选择一种你喜欢的。
我尝试了以下代码。然而,结果并不是我想要的。
$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.11
和 9
。
该模式将首先匹配具有任何数字和点的组,直到它到达
/s
将匹配 space。然后它将匹配 Q
。第二组
匹配任何剩余的数字。
StringRegExpReplace
用第 1 组和第 2 组替换整个字符串
用 space 分隔。
StringRegExp
将 2 个组作为 2 个数组元素。
从上面的2种正则表达式中选择一种你喜欢的。