J
JavaRegexer
Gast
Hallo,
ich möchte mich mal etwas näher mit den Java Pattern beschäftigen und habe mir ein kleines Beispiel
Programm geschrieben.
Nur habe ich hier schon ein Problem welches ich nicht verstehe.
Ich habe in einem String folgendes gespeichert:
Nun möchte ich die menu-Blöcke matchen, inklusiver deren Inhalt.
Mein Pattern dazu sieht wie folgt aus:
Doch so bekomme ich leider nichts raus.
Wenn ich ihn aber ändere zu :
liefert er mir immer den Anfang der menu-Blöcke und geht nicht bis zur schließenden } Klammer.
Also:
kommt heraus.
Ach so, die Ausgabe erzeuge ich per
Was mache ich falsch?
ich möchte mich mal etwas näher mit den Java Pattern beschäftigen und habe mir ein kleines Beispiel
Programm geschrieben.
Nur habe ich hier schon ein Problem welches ich nicht verstehe.
Ich habe in einem String folgendes gespeichert:
Code:
menu ic_menu
{
titel : "Information Center"
label: "Information Center"
items
{
call personenkontoliste_pro_jahr,
call personenkontoliste_pro_periode,
goto mehr_reports,
goto Azubi_reports,
call personenkontosaldo,
call ao_stammdatenreport,
call notepad
}
buttons
{
fct1 $(hauptmenue) mainmen,
fct2 $(verlassen) leave
}
entrycode
{
$(fk_mandant) = mand_nr();
}
}
menu Azubi_reports
{
titel: "Azubi Reports"
label: "Azubi Übungen"
items
{
call uebneu,
call uebruet,
goto megaeat
}
buttons
{
fct1 $(hauptmenue) mainmen,
fct2 $(verlassen) leave
}
}
menu megaeat
{
titel: "Essensverwaltung MegaPlus"
label: "Essensverwaltung MegaPlus"
items
{
call megaeat_mitarb,
call megaeat_bestell,
call megaeat_print
}
buttons
{
fct1 $(hauptmenue) mainmen,
fct2 $(verlassen) leave
}
}
menu mehr_reports
{
titel: "Noch mehr Reports"
label: "Viele Weitere"
items
{
call uebneu,
call uebruet
}
buttons
{
fct1 $(hauptmenue) mainmen,
fct2 $(verlassen) leave
}
}
ACTION personenkontoliste_pro_jahr "Personenkontoliste pro Jahr Mandant: $(fk_mandant)"
exec "Viewer.exe" "EXTERNAL#TemplateName=Reports/K/PersonenkontenInformation/Personenkontoliste pro Jahr.xml\; Provider=Oracle Provider for OLE DB\; Server=$(ic_server)\; Database=$(ic_db)$(fk_mandant)\; Userid=$(ic_id)$(fk_mandant); Language=1033\;";
ACTION personenkontoliste_pro_periode "Personenkontoliste pro Periode"
exec "Viewer.exe" "EXTERNAL#TemplateName=Reports/K/PersonenkontenInformation/Personenkontoliste pro Periode.xml\; Provider=Oracle Provider for OLE DB\; Server=$(ic_server)\; Database=$(ic_db)$(fk_mandant)\; Userid=$(ic_id)$(fk_mandant); Language=1033\;";
ACTION personenkontosaldo "Personenkontosaldo"
exec "Viewer.exe" "EXTERNAL#TemplateName=Reports/K/PersonenkontenInformation/Personenkontosaldo.xml\; Provider=Oracle Provider for OLE DB\; Server=$(ic_server)\; Database=$(ic_db)$(fk_mandant)\; Userid=$(ic_id)$(fk_mandant); Language=1033\;";
ACTION ao_stammdatenreport "AO Stammdatenreport"
exec "Viewer.exe" "EXTERNAL#TemplateName=Reports/K/AO/Stammdatenreport.xml\; Provider=Oracle Provider for OLE DB\; Server=$(ic_server)\; Database=$(ic_db)$(fk_mandant)\; Userid=$(ic_id)$(fk_mandant); Language=1033\;";
ACTION notepad "Notepad" exec "notepad.exe" "EXTERNAL#$(fk_mandant)";
ACTION uebneu "Uebung vom Neuhäusel: $(fk_mandant)"
exec "Viewer.exe" "EXTERNAL#TemplateName=Reports/K/PersonenkontenInformation/Personenkontoliste pro Jahr.xml\; Provider=Oracle Provider for OLE DB\; Server=$(ic_server)\; Database=$(ic_db)$(fk_mandant)\; Userid=$(ic_id)$(fk_mandant); Language=1033\;";
Nun möchte ich die menu-Blöcke matchen, inklusiver deren Inhalt.
Mein Pattern dazu sieht wie folgt aus:
Code:
Pattern p = Pattern.compile("menu\\s+\\w+\\s+[\\{](.*)[\\}]");
Doch so bekomme ich leider nichts raus.
Wenn ich ihn aber ändere zu :
Code:
Pattern p = Pattern.compile("menu\\s+\\w+\\s+[\\{](.*)");
liefert er mir immer den Anfang der menu-Blöcke und geht nicht bis zur schließenden } Klammer.
Also:
Code:
menu ic_menu
{
menu Azubi_reports
{
menu megaeat
{
menu mehr_reports
{
kommt heraus.
Ach so, die Ausgabe erzeuge ich per
Code:
Matcher m = p.matcher(mytext);
while ( m.find() ) {
System.out.println (m.group());
}
Was mache ich falsch?