我有一个看起来像这样的字符串:
17/07/2013 TEXTT TEXR 1 Text 1234567 456.78 987654
我需要分开这个,所以我最终得到2个值(在这个例子中它是1234567和456.78)。其余的都不需要。
我尝试使用带有%A_Space%的字符串拆分,但由于值之间的整个中间区域都填充了空格,因此无法正常工作。
有人有个主意吗?
答案 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
查找任何数字,使用+
使其连续查找多个数字。如果要查找期间,请使用\.