You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoIt正则表达式过滤字符串:如何获取指定匹配结果?

解决AutoIt正则提取数字并拼接的问题

你的问题出在两个关键点上:一是原正则表达式只能匹配第一个连续的数字+小数点序列,漏掉了Q后面的9;二是使用了$STR_REGEXPARRAYMATCH,它只会返回第一个匹配结果,而非所有符合条件的匹配项。

我们可以通过调整正则规则和匹配模式来实现需求:

修改后的代码

$strLine = "100.11 Q9"
; 匹配所有数字序列(包含带小数点的和纯整数的)
$sortString = StringRegExp($strLine, '(\d+\.?\d*)', $STR_REGEXPARRAYGLOBALMATCH)
; 把匹配到的两个数字用空格拼接
$result = $sortString[0] & " " & $sortString[1]
MsgBox(0, "", $result, 2)

代码说明

  1. 正则表达式(\d+\.?\d*):
    • \d+:匹配1个或多个数字
    • \.?:匹配可选的小数点(?表示该字符出现0次或1次)
    • \d*:匹配0个或多个数字(既兼容带小数点的数字如100.11,也能匹配纯整数如9)
  2. 匹配模式$STR_REGEXPARRAYGLOBALMATCH:
    这个参数会让StringRegExp返回所有匹配到的结果,而不是仅第一个。这样就能同时获取100.11和9两个目标内容。
  3. 结果拼接:
    把数组里的两个元素用空格连接,就得到你想要的100.11 9。

如果你的字符串可能包含更多数字部分(比如"100.11 Q9 X123"),可以用循环来自动拼接所有匹配项,避免硬编码索引:

$strLine = "100.11 Q9 X123"
$sortString = StringRegExp($strLine, '(\d+\.?\d*)', $STR_REGEXPARRAYGLOBALMATCH)
$result = ""
For $match In $sortString
    $result &= $match & " "
Next
; 去掉最后多余的空格
$result = StringTrimRight($result, 1)
MsgBox(0, "", $result, 2)

内容的提问来源于stack exchange,提问作者Wei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:08:37