RegEx und Methoden

Status
Nicht offen für weitere Antworten.
L

Lukas16

Gast
Hallo,

also ich habe einige solcher Methoden:


Code:
public void CheckMaxMPGruppe(){
		Pattern i = Pattern.compile("G[1-9]: .+ [a-zA-z] \\([0-9]\\/[1-9]\\)\n");
        Matcher j = i.matcher(input);
        boolean found = false;
        while(j.find()){
        	//System.out.println("CheckMaxMPGruppe: OK");
        	found = true;
        }
        if(!found){
        	error.append(error9);
        	error.append("\n");
        	counter++;
        }
	}


... sie funktionieren auch perfekt, nur da wird z.b nach (G1: ölasdf m (1/2)) gesucht und true zurückgegeben, aber was ist wenn ich jetzt noch ein (z.b.: G3: asdas m (1/4)) habe..... ich möchte dass das auch überprüft wird

kann mir bitte jemand helfen, bin am verzweifeln :?

Gruß
Lukas
 
L

Lukas16

Gast
ich brauche das ergebnis gar nicht abzufragen. Ich muss einen StringBuffer nach bestimmten Gruppen durchsuchen (bsp. für eine gruppe: G1: blablalb n (0/1)), wenn da drinnen ein Fehler ist soll es nur eine Meldung zurückgeben das etwas falsch ist.
 
S

SlaterB

Gast
was genau ist jetzt die Frage?
G3 wird nicht erkannt? du hast das Format etwas schwammig beschrieben, warum gehts nicht?
 
L

Lukas16

Gast
Textdokument:

G1: produktgruppe m (1/0)
P3: produkt x (1/1) [2,50€; P; 1; T]
G4: produktgruppe m (1/5)
A6: attribut m (1/5)

jetzt übeprüfe ich mit RegEx ob z.b. jede produktgruppe der Syntax entspricht (bei G1 und G4)

Code:
public void CheckSyntaxMPGruppe(){
		Pattern i = Pattern.compile("G[1-9]: .+ [a-zA-z] \\([0-9]\\/[0-9]\\)");
        Matcher j = i.matcher(input);
        boolean found = false;
        while(j.find()){
        	System.out.println("CheckSyntaxMPGruppe: " + group()); //dann schreibt es nur hin G1: produktgruppe m (1/0)
        	found = true;                                                               
        }
        if(!found) {
        	error.append(error5);
        	error.append("\n");
        	counter++;
        }
	}


ich versteh es nicht, es läuft ja in einer schleife.....wenn es ein 2. objekt findet dann muss es ja normal wieder rein gehen
 
L

Lukas16

Gast
ah es geht doch, aber es gibt immer nur eine Fehlermeldung aus....wie kann ich das machen das jedes mal ein fehler ausgegeben wird?
 
S

SlaterB

Gast
wie gesagt: du hast ne while-Schleife, die für 2x find() genau 2x durchlaufen wird,

wo könntest du wohl die Ausgabe hinschreiben, damit sie 2x erscheint?..

edit: obwohl, der Fehler erscheint bisher ja nur wenn nichts gefunden wird,
nun soll pro Treffer ein Fehler kommen? du machst aber auch Sachen..
 
L

Lukas16

Gast
ok, hab mich nicht verständlich ausgedrückt

wenn ich G1: produktgruppe x (1/0), G2: produktgruppe x (1/0) habe (beide wurden schon gefunden durch das G1: vorne) In einer anderen Methode wir überprüft ob vor der klammer ein m steht, das ist bei beiden nicht der fall, daher sollen 2 fehler ausgegeben werden.

gibt es da keine möglichkeit??
 
S

SlaterB

Gast
> In einer anderen Methode wir überprüft ob vor der klammer ein m steht, das ist bei beiden nicht der fall, daher sollen 2 fehler ausgegeben werden.
> gibt es da keine möglichkeit??


mit group() nach dem find() kannst du "G1: produktgruppe m (1/0)" oder ähnlich extrahieren
und darin nach dem m suchen oder beliebig anderes machen, wie du möchtest, klar gibts da ne Möglichkeit

was ist da jetzt die Frage?
 
L

Lukas16

Gast
hmmm

Code:
public void CheckSyntaxMPGruppe(){
		Pattern i = Pattern.compile("G[1-9]: .+ [a-zA-z] \\([0-9]\\/[0-9]\\)");
        Matcher j = i.matcher(input);
        boolean found = false;
        while(j.find()){
        	//System.out.println("CheckSyntaxMPGruppe: " + j.group());
        	found = true;
        	CheckMPGruppeMust();
        }
        if(!found) {
        	error.append(error5);
        	error.append("\n");
        	counter++;
        }
	}


public void CheckMPGruppeMust(){
		Pattern i = Pattern.compile("G[1-9]: .+ m \\([0-9]\\/[0-9]\\)\n");
        Matcher j = i.matcher(input);
        boolean found = false;
        while(j.find()){
        	found = true;
        }
        if(!found) {
        	error.append(error7);
        	error.append("\n");
        	counter++;
        }
	}


ok, ein teil von meinem beispiel:
in der 1. methode werden 2 "Gruppen" gefunden, daher wird die untere Methode aufgerufen. Wenn dort beide Gruppen nicht korrekt sind gibt es einen Fehler aus oda macht einen blödsinn (es soll genau 2 fehlermeldungen ausgeben!)

ich hoffe du verstehst es jetzt besser


PS: danke für deine hilfe :)
 
S

SlaterB

Gast
> Wenn dort beide Gruppen nicht korrekt sind gibt es einen Fehler aus oda macht einen blödsinn (es soll genau 2 fehlermeldungen ausgeben!)

können wir nicht mal anfangen, konkret zu werden?
was soll ich denn mit 'macht einen Blödsinn' anfangen?

--------

dein Programmaufbau ist doch Quatsch, für jedes Vorkommen Gx
rufst du CheckMPGruppeMust() auf, welches wieder den gesamten String durchsucht?

übergib nur die aktuelle Gruppe an die zweite Operation,
die dann nur für diese Gruppe prüft, ob m drin ist oder nicht,
und dafür Fehler ausgibt oder nicht (ohne while!)
 
L

Lukas16

Gast
die akutelle gruppe hole ich mir mit j.group().....d.h. Matcher matcher= i.matcher(j.group());



Code:
habe ein kleines test prog geschrieben, vielleicht kannst du mir dann so meinen Fehler besser erklären

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test { 

    public static void main(String[] args){ 
    	String input = "G13: produktgruppe m (1/0)\nG3: produktgruppe x (1/0)";
    	Pattern i = Pattern.compile("G[1-9]: .+ [a-zA-z] \\([0-9]\\/[0-9]\\)"); 
    	Matcher j = i.matcher(input); 
    	boolean found = false; 
    	while(j.find()){ 
    		System.out.println("CheckSyntaxMPGruppe: " + j.group()); 
    		found = true;                                                                
    	} 
    	if(!found) { 
    	    System.out.print("error");
    	} 
    }
    
    public static void CheckMaxMPGruppe(){
    	Pattern i = Pattern.compile("G[1-9]: .+ m \\([0-9]\\/[0-9]\\)"); 
    	Matcher matcher = i.matcher([b]j.group()[/b]); 
    	if(matcher.find()){ 
    		System.out.print("OK");                                                              
    	} 
    	else { 
    	    System.out.print("error: m fehlt");
    	} 
    }
}
 
L

Lukas16

Gast
Methodenaufruf in der while schleife habe ich vergessen zu kopieren
 
S

SlaterB

Gast
übergib nicht j, sondern j.group(), also nur einen String,
und x-ten Mal: was ist nun die Frage???
funktioniert doch, wenn du noch "G13" im String in "G1" korrigierst
 
L

Lukas16

Gast
Meine Frage (die letzte!):

eigentlich müsste ja alles funtz

>>übergib nicht j, sondern j.group(), also nur einen String, << ...versteh ich nicht, j.group() habe ich ja in der 2. Methode, aber es erkennt j nicht. Was muss ich jetzt machen?

Code:
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test { 

    public static void main(String[] args){ 
    	String input = "G1: produktgruppe m (1/0)\nG3: produktgruppe x (1/0)";
    	Pattern i = Pattern.compile("G[1-9]: .+ [a-zA-z] \\([0-9]\\/[0-9]\\)"); 
    	Matcher j = i.matcher(input); 
    	boolean found = false; 
    	while(j.find()){ 
    		System.out.println("CheckSyntaxMPGruppe: " + j.group()); //dann schreibt es nur hin G1: produktgruppe m (1/0) 
    		found = true;           
    		CheckMaxMPGruppe();
    	} 
    	if(!found) { 
    	    System.out.print("error");
    	} 
    }
    
    public static void CheckMaxMPGruppe(){
    	Pattern i = Pattern.compile("G[1-9]: .+ m \\([0-9]\\/[0-9]\\)"); 
    	Matcher matcher = i.matcher(j.group()); 
    	if(matcher.find()){ 
    		System.out.print("OK");                                                              
    	} 
    	else { 
    	    System.out.print("error");
    	} 
    }
}


DANKE
Lukas
 
S

SlaterB

Gast
noch mit statischen Variablen für die immer gleichen Pattern:

Code:
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test
{
    static Pattern G_ANY = Pattern.compile("G[1-9]: .+ [a-zA-z] \\([0-9]\\/[0-9]\\)");
    static Pattern G_M = Pattern.compile("G[1-9]: .+ m \\([0-9]\\/[0-9]\\)");

    public static void main(String[] args)
    {
        String input = "G1: produktgruppe m (1/0)\nG3: produktgruppe x (1/0)";

        Matcher matcher = G_ANY.matcher(input);
        boolean found = false;
        while (matcher.find())
        {
            System.out.println("CheckSyntaxMPGruppe: " + matcher.group());
            found = true;
            CheckMaxMPGruppe(matcher.group());
        }
        if (!found)
        {
            System.out.print("error");
        }
    }

    public static void CheckMaxMPGruppe(String suchString)
    {
        Matcher matcher = G_M.matcher(suchString);
        if (matcher.find())
        {
            System.out.println("OK");
        }
        else
        {
            System.out.println("error");
        }
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Regex mit Umlauten Java Basics - Anfänger-Themen 8
S Anfänger Regex Java Basics - Anfänger-Themen 4
G Regex greift nicht richtig Java Basics - Anfänger-Themen 4
B Regex Order unwichtig bei Lookaheads? Java Basics - Anfänger-Themen 7
F RegEx Hilfe Java Basics - Anfänger-Themen 5
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
W RegEx Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
A Zusammengesetzte Nomen/Straßennamen mit Regex-Ausdrücken trennen Java Basics - Anfänger-Themen 8
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
H Java Regex Aufzählung kontrollieren Java Basics - Anfänger-Themen 3
Nooobi Regex und .matches() geben keine Ausnahme Java Basics - Anfänger-Themen 10
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
K Wie verneine ich einen Regex? Java Basics - Anfänger-Themen 2
L Hilfe bei RegEx Java Basics - Anfänger-Themen 4
Dimax RegEx Java Basics - Anfänger-Themen 10
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
O Regex bei ReplaceAll ersetzt Wort und Sonderzeichen nicht. Java Basics - Anfänger-Themen 9
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
L Regex issue Java Basics - Anfänger-Themen 4
B Regex Kombination benötigt Java Basics - Anfänger-Themen 5
strohkolben Regex Java Basics - Anfänger-Themen 3
OnDemand Regex oder Split? Java Basics - Anfänger-Themen 5
I String.split regex Frage Java Basics - Anfänger-Themen 2
C RegEx Problem Java Basics - Anfänger-Themen 4
Dimax RegEx funktionieren nicht Java Basics - Anfänger-Themen 7
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
K substitute mit regex Java Basics - Anfänger-Themen 10
G RegEx Java Basics - Anfänger-Themen 11
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
M Regex zum Integer.parseInt Java Basics - Anfänger-Themen 4
G Regex Java Basics - Anfänger-Themen 4
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
M Regex anpassen Java Basics - Anfänger-Themen 19
C Regex-Problem Java Basics - Anfänger-Themen 4
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
C Positive und negative Zahlen mit Regex extrahieren Java Basics - Anfänger-Themen 8
F RegEx für Email Java Basics - Anfänger-Themen 2
F RegEx "+" nur als Zeichen, nicht als Operator oder Sonstiges Java Basics - Anfänger-Themen 2
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
FelixN RegEx Erläuterung "ˆ[ˆa-zA-Z]+$" Java Basics - Anfänger-Themen 6
F Regex Hilfe Java Basics - Anfänger-Themen 3
I Regex findet keine Treffer Java Basics - Anfänger-Themen 4
C Regex Java Basics - Anfänger-Themen 2
C Probleme bei Regex Java Basics - Anfänger-Themen 9
B Regex ignorieren von Groß - Kleinschreibung Java Basics - Anfänger-Themen 1
F Regex für Inlineformatierungen Java Basics - Anfänger-Themen 12
W Einfachen, ein beliebiges Zeichen oft erkennenden Regex Parser selber schreiben - wie vorgehen? Java Basics - Anfänger-Themen 12
O Regex Java Basics - Anfänger-Themen 2
F Switch Case Problem mit Regex lösen? Java Basics - Anfänger-Themen 6
H regex-Problem Java Basics - Anfänger-Themen 2
F Ist das ein korrekter Regex-Ausdruck? Java Basics - Anfänger-Themen 12
M Zahlenbereich mit RegEx Java Basics - Anfänger-Themen 3
B Hilfe bei Regex - Erstellung Java Basics - Anfänger-Themen 5
D regex Aufbau Frage Java Basics - Anfänger-Themen 4
W RegEx Matcher + Pattern und Emails Java Basics - Anfänger-Themen 8
R Rechenzeichen als regex Java Basics - Anfänger-Themen 10
S Ich verstehe die RegEx Tabelle von Javadoc nicht so ganz Java Basics - Anfänger-Themen 3
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
F RegEx Problem Java Basics - Anfänger-Themen 8
F Regex Hilfe Java Basics - Anfänger-Themen 14
G String nach Contains/Regex Java Basics - Anfänger-Themen 2
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
K RegEx - Multiple Line Java Basics - Anfänger-Themen 3
S Regex Pattern Java Basics - Anfänger-Themen 3
K Regex: illegal character range Java Basics - Anfänger-Themen 4
F RegEX Hilfe Java Basics - Anfänger-Themen 8
U Regex für kommaseparierte Zahlen Java Basics - Anfänger-Themen 1
K Operatoren Regex für 10er Zahlen Java Basics - Anfänger-Themen 8
V Java Regex richtig parsen Java Basics - Anfänger-Themen 2
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
N mein RegEx Java Basics - Anfänger-Themen 2
C Lösung für RegEx in Java gesucht Java Basics - Anfänger-Themen 2
B Java - Reguläre Ausdrücke - RegEx oder Regular Expressions - Eckige Klammern Java Basics - Anfänger-Themen 2
M Regex/matcher Java Basics - Anfänger-Themen 2
T Methoden String.matches() - Regex Java Basics - Anfänger-Themen 2
truesoul Regex für www Java Basics - Anfänger-Themen 0
N Methoden Straßennamen und Hausnummer - RegEx Java Basics - Anfänger-Themen 19
W Erste Schritte Regex negieren Java Basics - Anfänger-Themen 3
W String match mit Wildcard ODER Regex Java Basics - Anfänger-Themen 1
E useDelimiter-Anwednung / Regex Java Basics - Anfänger-Themen 2
C java regex Java Basics - Anfänger-Themen 2
C Regex zum matchen ausserhalb von Tags Java Basics - Anfänger-Themen 3
O Regex zwischenspeichern Java Basics - Anfänger-Themen 6
O Regex Java Basics - Anfänger-Themen 5
R Einfacher Regex Java Basics - Anfänger-Themen 3
V RegEx Java Basics - Anfänger-Themen 15
HoloYoitsu Datentypen replaceAll() mit regex? Java Basics - Anfänger-Themen 5
G regex Verständnis Problem Java Basics - Anfänger-Themen 3
G verwendung von regex Java Basics - Anfänger-Themen 3
X Regex splitten Java Basics - Anfänger-Themen 5
T Regex Problem Java Basics - Anfänger-Themen 4
B String nach regex überprüfen Java Basics - Anfänger-Themen 6
J Regex Ausdrücke im Array - Wieso werden sie nicht erkannt? Java Basics - Anfänger-Themen 4
N Regex Java Basics - Anfänger-Themen 4
F String.replaceAll() funktioniert nicht richtig oder habe ich den falschen Regex?? Java Basics - Anfänger-Themen 3
J Regex mit Return Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben