10

我正在寻找一个可以确保网页上同时显示两个短语的正则表达式。

我需要在网络上确保的两个短语是Current QPS (last 10s, ignored 0)Average Latency (last 100 queries)

网页看起来像(查询时间会有所不同,但文字不会改变):

Query Statistics

Average QPS 25.3673   
Average Latency 0.1002   
Average Latency (last 100 queries) 0.0834   # Match this one, ignore output-0,0834
Average Search Latency 0.0555   
Average Docsum Latency 0.0330   
Sampling period 3133524.9570   
Current QPS (last 10s, ignored 0) 24.8000  # Also match this one, ignore output 24.8000 
Peak QPS 170.9000   
Number of requests 79717858   
Number of queries 79489080 

我能够匹配网站上的每个短语,但不能同时匹配这两个短语。如何让我的工具忽略两个短语之间的内容?

PS我在这里没有用任何语言编程,正则表达式将被放入一个接受正则表达式的工具中。

4

4 回答 4

9

如果您可以确定它们将按该顺序出现(如果有的话),那么这应该有效:

(<query 1>).*(<query 2>)

例如

(Average Latency \(last \d+ queries\)).*(Current QPS \(last \d+s, ignored \d+\))

您可能需要检查.运算符是否与工具中的换行符匹配。

于 2012-06-12T14:26:15.570 回答
1

我的第一个建议是在你的正则表达式中以你希望它们出现的任何顺序简单地添加这两个模式

/($regex1.*?$regex2|$regex2.*?$regex1)/
于 2012-06-12T14:26:56.227 回答
0

这可能取决于您使用的工具——特别是它如何处理多行。

你可以试试这个:

Average Latency \(last \d+ queries\)\s(.*\s)*Current QPS \(last \d+s, ignored \d+\)\s
于 2012-06-12T14:27:33.893 回答
0

这应该工作

(?im)^(Average\s+Latency\s+\(last\s+100\s+queries\)|Current\s+QPS\s+\(last\s+10s,\s+ignored\s+0\)).+
于 2012-06-12T14:31:14.960 回答