2016-10-20 2 views
1

Ich habe einen Text, in dem ich Daten greifen und aufteilen muss. Ich muss "Häufigkeit der Überprüfung" innerhalb einer großen Textgruppe finden, dann, wenn das einmal gefunden ist, nimm alles nach und halte bei ')'.
Beispieltext ist:Brauchen Sie Hilfe in RegEx, um etwas nach einem obligatorischen Wert zu greifen

No. of components Variable 
Review frequency Quarterly (Mar., Jun., Sep., Dec.) 
Quick facts 
To learn more about the 

Was ich brauche, ist 'Quarterly' und 'März, Juni, September, Dezember'

Mein aktueller regex ist:

((?=.*?\bReview frequency\b)(\b(Q|q)uarterly|(A|a)nnually|(S|s)emi-(A|a)nnually)) 

Aber das funktioniert nicht. Im Wesentlichen muss die "Überprüfungshäufigkeit" der Qualifier sein, bevor wir mit der Erfassung der anderen Informationen beginnen, da andere Daten/Zeiträume innerhalb der Datei vorhanden sein können. Vielen Dank!

+0

Vielleicht ['(? M)^Review Frequenz \ s * (. +)'] (Https://regex101.com/r/p6mT0O/1) ist genug? Oder ['^ Häufigkeit überprüfen [\ t] + (\ w +) [\ t] + (. +)'] (Https://regex101.com/r/p6mT0O/2)? –

+0

Möchten Sie - re.search (r '. * Überprüfen Frequenz (. *)', Linie) .group (1) – Transhuman

+0

Try (Review Frequenz) (. +) Beachten Sie, dass, wenn Sie nach 'Review Frequenz' wollen ist in einer neuen Zeile, das wird nicht funktionieren. –

Antwort

1

Sie stimmen nicht mit den übrigen Daten in der Zeile überein.

Ich schlage vor, mit:

(?m)^Review frequency[ \t]+(\w+)[ \t]+(.+) 

die regex demo

sehen, ob die erste Erfassungsgruppe nur drei Wörter in Ihrem Muster wie angegeben enthalten können, verwenden

(?m)^Review frequency[ \t]+([Qq]uarterly|(?:[Ss]emi-)?[Aa]nnually)[ \t]+(.*) 

Siehe another regex demo

Use these patterns with re.findall:

+0

Vielen Dank diese zweite funktioniert! Wie wäre es, wenn ich re.MULTILINE in diese integrieren müsste? oder die Erfassungsgruppen getrennt drucken? – staten12

+0

Sobald Sie einer Variablen das 're.findall'-Ergebnis zugewiesen haben, können Sie die Ergebnisse wie gewünscht ausdrucken. –

Verwandte Themen