1

我有一个看起来像这样的字符串:

17/07/2013   TEXTT TEXR          1  Text                                 1234567            456.78     987654

我需要将其分开,所以我最终只得到 2 个值(在本例中为 1234567 和 456.78)。其余的都是不需要的。

我尝试使用带有 %A_Space% 的字符串拆分,但是由于值之间的整个中间区域都充满了空格,因此它实际上不起作用。

有人有想法吗?

4

2 回答 2

1
src:="17/07/2013   TEXTT TEXR          1  Text                                "
. " 1234567            456.78     987654", pattern:="([\d\.]+)\s+([\d\.]+)"
RegexMatch(src, pattern, match)
MsgBox, 262144, % "result", % match1 "`n"match2
于 2013-07-18T05:51:40.147 回答
0

你应该看看RegExMatch()RegexReplace()

所以,你需要建立一个正则表达式针(我不是一个专家正则表达式,但这会工作)

首先,删除直到“1 Text”末尾的所有字符串,因为正如您所说,“1 Text”是恒定的。这将为您留下三个数值。

像这样的东西应该只找到你想要的数字:

needle:= "iO)1\s+Text"
partialstring := RegexMatch(completestring, needle, results)

lenOfFrontToRemove := results.pos() + results.len()
lastthreenumbers := substr(completestring, lenOfFrontToRemove, strlen(completestring) )
lastthreenumbers := trim(lastthreenumbers)
msgbox % lastthreenumbers

解释正则表达式针: -i表示不区分大小写 -O代表选项 - 它让我们使用 results.pos 和 results.len -\s查找空格的方法;+寻找多个(如果存在)的方法。

现在你只有最后三个数字。

1234567            456.78     987654

但你明白了,对吧?你应该能够从这里解析它。

一些提示:在正则表达式针中,用于\d查找任何数字,并+使其查找多个连续的数字。如果要查找期间,请使用\.

于 2013-07-18T04:08:00.777 回答