2012-06-12 3 views
5

Sto cercando un'espressione regolare che possa garantire due frasi visualizzate su una pagina Web contemporaneamente.Espressione regolare per abbinare due frasi separate

Le due frasi che necessità di garantire sul web sono Current QPS (last 10s, ignored 0) e Average Latency (last 100 queries)

La pagina web si presenta come (Il tempo di risposta sarebbe stato diverso, ma il testo non cambierà):

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 

I sono in grado di abbinare ogni frase sul sito web, ma non le due frasi insieme. Come posso fare in modo che il mio strumento ignori il contenuto tra le due frasi?

P.S. Non sto programmando in nessuna lingua qui, la regex verrà inserita in uno strumento che accetta espressioni regolari.

+0

Fondamentalmente, questo è un duplicato di [questa domanda] (http://stackoverflow.com/questions/5809272/c-sharp-regular-expression-to-match-qualsiasi-carattere). –

+0

Coinvolge alcuni degli stessi problemi .. ma in realtà non è un duplicato. Quello stava chiedendo come comportarsi con i newline, questo sta chiedendo come combinare le espressioni regex. – vergenzt

risposta

5

Se si può essere sicuri che appariranno in questo ordine, se non del tutto, allora questo dovrebbe funzionare:

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

Ad es

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

Potrebbe essere necessario verificare che l'operatore . corrisponde a capo nel vostro strumento.

+0

Ma non ho bisogno del testo tra le due frasi. Come puoi sbarazzartene? – Madean

+0

Che strumento stai usando e cosa stai cercando di fare se/quando quei modelli corrispondono? – vergenzt

+0

Sto usando uno strumento aziendale. Fondamentalmente lo strumento accetta la regex e restituisce lo stato della pagina come buono se vengono trovate le due stringhe. – Madean

1

mio primo suggerisco è semplicemente aggiungere i due modelli nel vostro un'espressione regolare in qualsiasi ordine che ci si aspetta vengano visualizzati

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

Grazie per l'aiuto, ma sfortunatamente l'espressione non funziona nel mio strumento. Una domanda: il '. *?' Fa il lavoro di ignorare la parte centrale? – Madean

+0

''. *? '' Corrisponde a qualsiasi (la più piccola) parte tra le due espressioni; forse devi impostare una bandiera per. per abbinare newline – Hachi

0

Potrebbe dipendere lo strumento che si sta utilizzando - in particolare, come gestisce più linee.

Si può provare questo:

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

Questo dovrebbe funzionare

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