AutoHotKey脚本 - 字符串拆分

时间:2013-07-18 01:13:38

标签: autohotkey

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

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

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

我尝试使用带有%A_Space%的字符串拆分,但由于值之间的整个中间区域都填充了空格,因此无法正常工作。

有人有个主意吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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查找任何数字,使用+使其连续查找多个数字。如果要查找期间,请使用\.