2012-06-12 18 views
5

Szukam wyrażenia regularnego, które może zapewnić dwa zwroty pojawiające się na stronie internetowej w tym samym czasie.Wyrażenie regularne, aby dopasować dwa oddzielne wyrażenia

Oba zwroty muszę zapewnić w internecie są Current QPS (last 10s, ignored 0) i Average Latency (last 100 queries)

Na stronie wygląda (czas zapytania byłaby inna, ale tekst nie zmieni):

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 jestem w stanie dopasować każdą frazę na stronie internetowej, ale nie oba zdania razem. Jak mogę uczynić moje narzędzie zignorować treść między tymi dwoma zwrotami?

P.S. Nie programuję tutaj w żadnym języku, regex zostanie wstawiony do narzędzia, które akceptuje regex.

+0

Zasadniczo, jest to duplikat [to pytanie] (http://stackoverflow.com/questions/5809272/c-sharp-regular-expression-to-match-any-character). –

+0

Dotyczy to niektórych z tych samych problemów .. ale tak naprawdę nie jest duplikatem. Ten pytał, jak radzić sobie z nowymi liniami, ten pyta, jak połączyć wyrazy regularne. – vergenzt

Odpowiedz

5

Jeśli można mieć pewność, że będą one wyświetlane w takiej kolejności, jeśli w ogóle, to powinno działać:

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

Np

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

Być może konieczne będzie sprawdzenie, czy operator . pasuje do nowych linii w narzędziu.

+0

Ale nie potrzebuję tekstu między dwoma zwrotami. Jak możesz się ich pozbyć? – Madean

+0

Jakiego narzędzia używasz i co próbujesz zrobić, jeśli/kiedy te wzorce się zgadzają? – vergenzt

+0

Używam narzędzia dla przedsiębiorstw. Zasadniczo narzędzie akceptuje wyrażenie regularne i zwraca status strony jako dobry, jeśli znaleziono dwa łańcuchy. – Madean

1

mój pierwszy sugerują, jest po prostu dodać dwa wzorce w swoim wyrażenia regularnego w dowolnej kolejności można się spodziewać ich do stawienia

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

Dzięki za pomoc, ale niestety wyrażenie nie działa w moim narzędziu. One quesiont - czy ". *?" Wykonuje pracę ignorując środkową część? – Madean

+0

''. *? '' Dopasowuje dowolną (najmniejszą) część między dwoma wyrażeniami; może musisz ustawić flagę dla. dopasować nowe linie – Hachi

0

To może zależeć od narzędzia używasz - konkretnie, jak to uchwyty wiele linii.

Można spróbować to:

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

To powinno działać

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