Hallo Ich habe ein Skript, um durch einen Notizblock von Zahlen mit einer Reihe von Regex zu gehen. Meine Regex funktionieren mit Ausnahme einiger Werte, die nicht richtig angezeigt werden. Zum Beispiel werden einige Zahlenbeispiele wie 11111-C00 oder 22222-X01 nur als 11111 und 22222 zurückgegeben und enthalten nicht "-" und was danach passiert. Ich habe auch ein paar Fälle, die im Format enden: Nummer, Briefnummer. Diese 2 Regex geben mir nicht mein gewünschtes Ergebnis: d {4,5} - \ w {1} \ d {2} und \ d {4} - \ w \ d {1} \ wRegex Python gibt kein gewünschtes Ergebnis zurück
Voll Code:
import re
filename = 'Text.txt'
pattern = '\d{4,5}-\d{2,3}|\d{4,9}|\w{3}\d-\d{2}|\d{4,5}-\w{1}\d{2}|\b|\d{4}-\w\d{1}\w'
new_file = []
with open('Text.txt', 'r') as f:
lines = f.readlines()
for line in lines:
match = re.search(pattern, line)
if match:
new_line = match.group() + '\n'
print new_line
new_file.append(new_line)
with open('NewText.txt', 'w') as f:
f.seek(0)
f.writelines(new_file)
Also alle meine regex die arbeiten gut mit Ausnahme der letzten 2 (d {4,5} - \ w {1} \ d {2} und \ d {4} - \ w \ d {1} \ w) für Muster wie XXXXX-LXX und XXXXX-LXL, wobei X eine Zahl und L ein Buchstabe ist und nur als XXXX oder XXXXX zurückgegeben wird. Wo gehe ich falsch?
Sie suchen nach '\ d {4,9}' 'vor 'd {4,5 } - \ w {1} \ d {2} 'und' \ d {4} - \ w \ d {1} \ w'. Prüfen Sie, ob Sie diese Option auf '\ d {4,5} - \ d {2,3} | \ w {3} \ d- \ d {2} | \ d {4,5} - \ w {1} setzen. \ d {2} | \ b | \ d {4} - \ w \ d {1} \ w | \ d {4,9} 'löst dein Problem –