Extrahieren bestimmter Daten in einer Datei mit Regex [geschlossen]


0

Folgende Informationen möchte ich aus einer Datei extrahieren, die eine andere Version, ein anderes Veröffentlichungsdatum und eine andere CVE-Nummer hat. Kann mir jemand zeigen, wie man diese Informationen mit Regex abruft?

    Release date: March 13, 2007
    Vulnerability identifier: APSB07-07
    CVE number: CVE-2007-1278
    Platform: Windows only

Antworten:


4

Wenn Sie den Kopf nicht um Regex wickeln können, verwenden Sie ihn nicht. In den meisten Fällen können Sie es durch reguläre Python-String-Funktionen ersetzen.

Kleines Beispiel für Ihre Daten:

>>> s = """    Release date: March 13, 2007
...     Vulnerability identifier: APSB07-07
...     CVE number: CVE-2007-1278
...     Platform: Windows only"""
>>> for line in s.split("\n"):
...     if "Release date:" in line:
...         print line.split("Release date: ")[1]
...     if "CVE number:" in line:
...         print line.split("CVE number: ")[1]
... 
March 13, 2007
CVE-2007-1278
>>>

Dies kann natürlich verbessert werden, aber es soll Ihnen nur zeigen, dass es ohne Regex ganz einfach ist.

Vergiss niemals das berühmte Zitat:

Einige Leute denken, wenn sie mit einem Problem konfrontiert werden: „Ich weiß, ich werde reguläre Ausdrücke verwenden.“ Jetzt haben sie zwei Probleme.


Ich habe eine Datei mit einer anderen Plattform, einem anderen Veröffentlichungsdatum, einer anderen CVE-Nummer. Wie kann ich das tun?
Naive

@ Kummi_10: einfach die sVariable ersetzen und s.split("\n")im Beispiel mit den Daten aus der Datei lesen. Wahrscheinlich so etwas wiewith open("mydata.txt", "r") as infile: infile.read()
Timo

2

Abhängig davon, welche Informationen Sie aus der obigen Zeichenfolge extrahieren möchten, können Sie so etwas wie diesen Regex-Tester verwenden . Jedes Mal, wenn ich einen regulären Ausdruck schreibe, stelle ich damit sicher, dass er zuerst funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.