Leider habe ich wieder ein für mich kompliziertes Regex Problem.
Ich will aus meinem nachfolgenden Teststring die Tabellen(alles was zwischen ! bzw + steht) auslesen:
Hier ist der Teststring:
Dabei soll er nun folgendes ausgeben:
Hier ist noch der dazugehörige Testcode:
Ich will aus meinem nachfolgenden Teststring die Tabellen(alles was zwischen ! bzw + steht) auslesen:
Hier ist der Teststring:
Code:
+ "TestPattern \r\n"
+ "Hier steht ein TEXT \r\n"
+ " +------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+\n"
+ " ! TESTDATEN ! Ent- ! Anzahl ! MUSTER ! Zahl ! von ! eine ! nach ! Volume !\n"
+ " +------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+\n"
+ " ! testContent ! täglich ! 0 ! 0 ! 0 ! TEST ! -2 ! Archiv ! AA.BB !\n"
+ " +------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+\n"
+ " ! testContent ! täglich ! 1 ! 1 ! 1 ! TEST ! -1 ! TEST ! Ia.AAD !\n"
+ " +------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+\n"
+ " Weiterer Test \r\n"
+ " Weiterer Test \r\n"
+ " +------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+\n"
+ " ! TESTDATEN ! Ent- ! Anzahl ! MUSTER ! Zahl ! von ! eine ! nach ! Volume !\n"
+ " +------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+\n"
+ " ! testContent ! täglich ! 0 ! 0 ! 0 ! TEST ! -2 ! Archiv ! AA.BB !\n"
+ " +------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+\n"
+ " ! testContent ! täglich ! 1 ! 1 ! 1 ! TEST ! -1 ! TEST ! Ia.AAD !\n"
+ " +------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+\n"
+ " Testende \r\n";
Dabei soll er nun folgendes ausgeben:
Code:
Table found: ' +------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+
! TESTDATEN ! Ent- ! Anzahl ! MUSTER ! Zahl ! von ! eine ! nach ! Volume !
+------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+
! testContent ! täglich ! 0 ! 0 ! 0 ! TEST ! -2 ! Archiv ! AA.BB !
+------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+
! testContent ! täglich ! 1 ! 1 ! 1 ! TEST ! -1 ! TEST ! Ia.AAD !
+------------------------------+-----------+---------+----------+-------+--------+-------+--------+--------+
[code]
Und dann natürlich das selbe nochmals.
Leider gibt er bei mir aber die Zeilen, in denen nur "Weiter Test" steht auch aus und er fasst alles zu einer Table zusammen.
Gibt es da irgendein Problem mit meiner Single-Multline (?s bzw ?m) Aufteilung oder habe ich sonst irgendeinen Denkfehler.
Hier ist mein Regex:
[code]
public static final String TABLE_REGEX = "((?m)(^\\s*[+|!][-|+]*[+|!]$)(?s).*)((?m)(^\\s*[+|!][-|+]*[+|!]))";
Hier ist noch der dazugehörige Testcode:
Code:
@Test
public void testTableRegexPattern() {
logger.info("testTableRegexPattern start");
Pattern p = Pattern.compile(TABLE_REGEX);
Matcher m = p.matcher(testContent);
logger.info("Anzahl der Gruppen " + m.groupCount());
while (m.find()) {
logger.info("Table found: '" + m.group() + "'");
}
logger.info("testTableRegexPattern end");
}