我有一個字符串,它看起來像這樣:AutoHotkey的腳本 - 字符串分割
17/07/2013 TEXTT TEXR 1 Text 1234567 456.78 987654
我需要分開處理,所以我只用2倍的值(在這個例子是1234567和456.78)結束。剩下的就不需要了。
我嘗試使用字符串拆分與%A_Space%,但作爲值之間的整個中間區域填充空格,它並沒有真正的工作。
有人有想法嗎?
我有一個字符串,它看起來像這樣:AutoHotkey的腳本 - 字符串分割
17/07/2013 TEXTT TEXR 1 Text 1234567 456.78 987654
我需要分開處理,所以我只用2倍的值(在這個例子是1234567和456.78)結束。剩下的就不需要了。
我嘗試使用字符串拆分與%A_Space%,但作爲值之間的整個中間區域填充空格,它並沒有真正的工作。
有人有想法嗎?
你應該看看RegExMatch()
和RegexReplace()
。
所以,你需要建立一個正則表達式針(我不是專家regexer,但是這將工作)
首先,刪除所有的字符串高達「1個文本」,因爲「結束1文本「就像你說的那樣,是不變的。這會讓你看到三個數字值。
像這樣的東西應該找到剛纔的數字你想要的:
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
查找任意數字,並使用+
使其連續查找多個數字。如果您想查找期間,請使用\.
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
啊,你得到的正則表達式 - 我試過,但無法弄清楚。 – bgmCoder
您的列表是否以此方式保持一致?也就是說,你會有任何與空間有關的詞嗎? TEXTT TEXR會不會改變? – bgmCoder
第二個值(即TEXTT TEXR)可以是從1到4個字的任何值。下一個值始終爲1,下面的值始終爲「文本」。之後的值總是不同的,但總是相似的。 – user2593572