2016-12-02 5 views
0

ich Dateien habe wie unten angegeben Ich möchte meine Datei validieren, wenn erste Zeile „ZZ =“ aufweist und dritten Datensatz mit nur „XXX“RegexMuster der Datei von bestimmten Datensatz entsprechen

Wenn Dieses Muster stimmt nicht mit der Ablehnung der Datei überein.

Datei Beispiel

ZZ=101 
OO 
XXX 
111111111111 
222222222222 

00000000000 
AAAAAAAAAAAA 


valid file example 


ZZ=101 
OO 
XXX 
111111111111 
222222222222 

00000000000 
AAAAAAAAAAAA 


Not valid file 


ZZ=101 
OO 
XSS (should be rejected except XXX) 
111111111111 
222222222222 

00000000000 
AAAAAAAAAAAA 


Not valid file 


HH=101 (should be rejected except ZZ=) 
OO 
XXX (should be rejected except XXX) 
111111111111 
222222222222 

00000000000 
AAAAAAAAAAAA 

Gibt es irgendeine Weise, die ich Regex dieses Muster passen verwenden könnte?

Irgendwelche Vorschläge bitte ..

Danke !!

+2

Welches Werkzeug/welche Sprache verwenden Sie? Wo ist 'DDE' in Ihrem Beispieltext? –

+0

@ WiktorStribiżew Ich habe die Frage aktualisiert ... seine XXX nicht DDE. Ich benutze ETL-Tool mit kleinen Java – kelly

+0

Nicht sicher, versuchen Sie '(? M)^ZZ =. * \ R? \ N. * \ R? \ NXXX (?: \ R? \ N. +) * (? : \ r? \ n) {2}. * \ r? \ n. * '([demo] (https://regex101.com/r/fpo7ZT/1)). –

Antwort

0

Versuchen Sie, diese

/ZZ=\d+.+XXX.+/s 

/- Delimiter
ZZ = \ d + + XXX + -.. Pattern
/ - End Delimiter
s - Einzeiliger Modifikator

Ich habe in PHP ausprobiert und es funktioniert

https://regex101.com/r/KXlE1q/1

0

dass Angenommen von „Datensatz“ Sie bedeuten Linien, die durch „\ r“ getrennt und/oder „\ n“, und jeder Datensatz ist in einer separaten Datei, wäre es bereits ausreichend sein, um dieses Muster zu überprüfen:

^ZZ=.*[\r\n]{1,2}.*[\r\n]{1,2}XXX 

Wenn Sie stattdessen alle Datensätze in einer Datei zusammengeführt haben, scheint das oben vorgeschlagene Muster Wiktor Stribiżew das von Ihnen gesuchte Muster genauer abzudecken.

EDIT:

Dies sollte etwas nach dem obigen Muster entspricht:

^ZZ=.*[\r\n]{1,2}.*[\r\n]{1,2}XXX[\s\S]* 

(I ebenfalls korrigiert [\ r \ n] auf [\ r \ n] {1,2})

+0

@friedemann_bach ... nach Übereinstimmung mit erstem und drittem Datensatz ...passe alles an, was nach dem dritten Datensatz kommt ... neue Zeilen, leere Zeilen, Leerzeichen, Tab usw. etc ... egal wie viele Datensätze nach dem dritten Datensatz vorhanden sind https://regex101.com/r/LuMI9e/1 – kelly

+0

Antwort aktualisiert. –