我一直在研究正则表达式来解析一系列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