Ich könnte eine Regex für die Übereinstimmung einer Log-Zeile schreiben. Aber meine Datei enthält einige Protokollzeilen, die sich von den anderen Protokollzeilen dadurch unterscheiden, dass es nur ein paar zusätzliche Felder gibt oder in einigen wenigen die Schlüsselwertpaare durcheinander liegen.Regex für Log-Zeilen, die leicht voneinander abweichen können - in Funke
Eg. eine Protokollzeile: case_id=1 event_id=35654423 date=30-12-2010 time=11.02 activity=registerrequest name=Pete costs=50 rerr="-"
ein anderes: case_id=1 event_id=35654424 date=31-12-2010 time=11.07 costs=400 rerr="-" activity=examinethoroughly name=Sue rloc="-"
Mein log pattern = "^([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)"
Dies ist mein Code für in Funken Gruppierung:
match = re.search(LOG_PATTERN,line)
Case_ID = match.group(1)
Event_ID = match.group(2)
Date = match.group(3)
Time = match.group(4)
Activity = match.group(5)
Resource = match.group(6)
Costs = match.group(7)
Rerr = match.group(8)
Dieser Code würde nur den ersten Log-Zeile entsprechen. Wie schreibe ich eine Regex, so dass ich sie in Spark gruppieren kann, ohne eine der Protokollzeilen zu ignorieren?
Eine Anmerkung: Einige Werte sind in Anführungszeichen und Sie verwenden '[^ \ s] +' - das wird Zitate in den Übereinstimmungen enthalten - ist es OK? –
Ja, das ist in Ordnung. – kaks