正则表达式匹配两个单独的短语

时间:2012-06-12 14:22:52

标签: regex string whitespace match phrases

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

我需要在网络上确保的两个短语是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 

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

P.S。我不是在这里用任何语言编程,正则表达式将被放入一个接受正则表达式的工具。

4 个答案:

答案 0 :(得分:6)

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

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

E.g。

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

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

答案 1 :(得分:1)

我的第一个建议就是按照您希望它们出现的任何顺序在正则表达式中添加两个模式

/($regex1.*?$regex2|$regex2.*?$regex1)/

答案 2 :(得分:0)

它可能取决于您正在使用的工具 - 具体来说,它取决于它如何处理多行。

你可以试试这个:

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

答案 3 :(得分:0)

这应该有用

(?im)^(Average\s+Latency\s+\(last\s+100\s+queries\)|Current\s+QPS\s+\(last\s+10s,\s+ignored\s+0\)).+