我一直在研究正則表達式來解析一系列SQLIO運行的輸出。我已經相當遠了,但尚未完成。我正在尋求一個100%的正則表達式解決方案,並且不需要預先處理輸入。任何人都可以幫助一些指導與下面的正則表達式:正則表達式幫助解析SQLIO輸出
.*v(?<SQLIOVersion>\d\.\d).*\n.*\n(?<threads>\d*)\s.*for\s(?<Seconds>\d+).*\n.*using\s(?<clustersize>[0-9]*)KB.*\n.*\n.*size:\s(?<currentfilesize>\d+).*\n.*\n.*\n.*\n.*\s(?<IOs>\d*\.\d*).*\n.*\s(?<MBs>\d*\.\d*).*\n.*\n.*\s(?<MinLatency_ms>\d+).*\n.*\s(?<AvgLatency_ms>\d+).*\n.*\s(?<MaxLatency_ms>\d+).*\n.*\n.*\n\%\:..(?<ms>\d*\s+)*
下面是輸出的一個片段 - 注意頭,其中SQLIO批處理期間變化:File
你有什麼問題? /(? \ d * \ s +)* /並不代表您可能會想到的內容,它只會爲您提供最後一個值,而不是一系列值。你可能想要類似/(?(?:\ d + \ s +)+)/。你使用什麼語言/工具? –
Qtax
2010-03-18 16:27:39
好吧,我沒有收到艾倫在答案中已經確定的所有條目。關於直方圖中的ms,我實際上是通過指定的表達式獲取值的列表(無法讓您的建議工作?)。然而,由於某種原因,最後的值還包括CR LF。還沒有完全想到這一點。我正在使用expresso作爲編輯器。 – jaspernygaard 2010-03-18 16:56:57
嘗試更改'\%\:..(? \ d * \ s +)*'到'%:(? + \ d +)+'。您似乎認爲'\ s'只能匹配空格,但它也與換行匹配(以及其他幾個字符)。只是供參考,'%'和':'不需要逃脫,但這沒有任何傷害。 –
2010-03-18 20:49:08