GrundsätzlichBenötigen regulären Ausdruck formulieren helfen Daten zu analysieren
Ich habe Text Ich möchte von einem Textblock auszuspucken. Ich habe den regulären Ausdruck aber größtenteils unten. Es ist entweder zu wenig [überspringt einen Abschnitt] oder zu viel [liest einen Teil des nächsten Abschnitts]. Es muss im Grunde Text lesen, den ich aus einem Kontoauszug extrahiert habe. Ich habe es bereits versucht Ich lese mehr über reguläre Ausdrücke, aber ich habe immer noch keine Ahnung, was ich tun soll.
Heres ein bisschen eine Probe für euch zu verstehen, was ich versuche zu tun.
_4XXXXXXXXXXXXXX9_
_SOU THE HOME DEPOT 431 POMPANO BEACH * FL
AUT 020112 DDA PURCHASE_
_2/1_DEBIT POS_3.15_
Die Unterstriche sind im Grunde Teile, die ich extrahieren möchte. Grundsätzlich alles außer dem DEBIT POS grundsätzlich.
Und die regex Ich verwende ist:
\A
(?<SerialNumber>\b[0-9]{13,16}\b)
(?<Description>.) 'PROBLEM HERE'
(?<PostingDate>
(?:1[0-2]|[1-9])/(?:3[01]|[12][0-9]|[1-9]))
(?<Amount>[,0-9]+\.[0-9]{2})
\Z
Ich kann nicht die Beschreibung von beliebiger Länge von Zeichen zu sein, weil ich weiß nicht, die maximale Länge, dass der Textteil sein wird. Ich weiß auch nicht, ob es 2 Zeilen für die Beschreibung oder nur 1 ist. Das ist hauptsächlich was mich verwirrt.
Der Grund, warum ich regex verwende, ist, weil ich wissen muss, ob die erste Zeile eine Debit-Transaktion sein wird oder ob es ein Scheck ist und was nicht. Sie variieren nach Zeilenlänge [extrahiert aus PDF und mussten alle Müll entfernen.] Ich kann nicht sagen, dass alle Transaktionen DEBIT POS haben werden. + 4XXXXXXXXXXXXXXX3 + SHELL OIL 57529380602 Coconut Creek * FL + AUT 021.012 VISA DDA PUR + 2/10DEBIT CARD PURCHASE35.05 oder sogar tauschen direkt nach einer Abbuchung und Tagessalden enthalten. –
Dann wäre es nicht schwer, zwei Objekte (oder so viele, wie Sie brauchen) einzurichten, indem Sie in der ersten Zeile Regex ausführen, um den Typ zu erkennen, und dann Code ausführen, der zu diesem Objekt passt, bis Sie ihn gelesen haben das Objekt. –