2017-12-07 1 views
0

ich einige Forschungen gemacht habe, aber eine Antwort auf mein Problem nicht gefunden. Ich mache eine Xslt eine Datei Text zu transformieren, um zu XML durch XSLT 2.0 Ich brauche eine Zeichenfolge durch eine regex (unter Verwendung von XSLT-Funktion) Dies ist der Inhalt der Textdatei zu analysieren:wie man ein Muster x-mal in einen regulären Ausdruck wiederholen

0098120853 ED 2000-01-01 1 D 0 I 
0098120854 ED 2000-01-01 1 E 0 I 
0098120855 ED 2000-01-01 1 F 0 I 

Diese Spalten werden durch "tabellarische" Taste (Tab) getrennt ich brauche einen regulären Ausdruck, der das Muster wiederholt sich (. \ t (.))

Dies ist eigentlich meine regex ist und es funktioniert gut (7 Spalten)

regex="(.*)\t(.*)\t(.*)\t(.*)\t(.*)\t(.*)\t(.*) 

Wie kann ich das Muster für 20 Spalten zu wiederholen, ohne dieses Muster 20 Mal in der Regex zu schreiben?

danke.

+1

Verwenden Sie, müssen Sie das Muster wiederholen? Wenn Sie XSLT 2.0 erwähnen und die Zeichenfolge analysieren, klingt es so, als ob Sie z. '<- Transformation/Ausgabe jede hier Spalte je nach Bedarf -> ' . –

Antwort

1

Um zu überprüfen, für genau n Wiederholungen {n} in der gleichen Art und Weise verwenden würden Sie für * oder + z.B. für 20 Spalten (mit 19 Registerkarten)

regex="(.*\t){19}.*" 

Wahrscheinlich möchten Sie auch in Ihren Spaltendaten nach Leerzeichen suchen, z.

Wenn Sie sicherstellen möchten, dass Zeilen mit 21 oder mehr Spalten ausgeschlossen sind, verwenden Sie die Anker für Anfang und Ende der Zeile, z.

regex="^(\S+\t){19}\S+$" 
+0

hat es eigentlich nicht funktioniert. Meine XML-Datei ist leer. – amin89

Verwandte Themen