Parameterauswertung mit regular Expression

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi erstmal,

bin neu hier und hoffe, hier die nötige Hilfe zu finden. Und natürlich auch nötige Hilfe zu geben, wenn es möglich ist! ;-)

Hier mein Problem:

Ich habe einen String, den ich in ein String-Array splitten muss. Die Regeln sind die gleichen, wie in Java zum Erstellen des String-Arrays für main-Methoden erstellt.
Soll heißen: Der String "ABC 'DE FG' 22" soll in ein Array mit den 3 Elementen "ABC" "'DE FG'" und "22" gesplittet werden. "ABC DEF GHI" in "ABC" "DEF" und "GHI".....

Der Knackpunkt ist das 'DE FG'! Habe schon versucht, mit Lookbehinds zu prüfen, ob das Blank als Trennzeichen gewertet werden soll:

Code:
"(?<='.+) (?=.+')"


Da aber in einem Lookahead keine regulären Ausdrücke wie "+" verwendet werden dürfen, weiß ich nicht weiter.

Weiß zufällig jemand wie Java das macht oder hat eine andere Idee?

Vielen Dank im Voraus!
 
S

SlaterB

Gast
ich denke nicht, dass split eine derartige Beschreibung erhalten kann,

es funktioniert aber:
Code:
public class Test
{
    public static void main(String args[])
        throws Exception
    {
        String st = "ABC 'DE FG' 22 ";
        Pattern p = Pattern.compile("([^ ']+) |('[^']+') ");
        Matcher m = p.matcher(st);
        while (m.find())
        {
            System.out.println("found: " + m.group());
        }
    }
}
vielleicht ist das was für dich,

wichtig: am Ende des Strings noch ein Leerzeichen einfügen, damit die letzte Gruppe gefunden wird

und m.group() enthält dann bisher jeweils das Leerzeichen am Ende, kann gefährlich sein
 

PhiLa

Neues Mitglied
Hey,

ja die Lösung ist gut. Immer ein Leerzeichen hinter den String einfügen ist zwar nicht die hübscheste Variante, aber es erspart mir eine noch schlimmere Arrayverarbeitung.
Dachte an sowas wie:

Code:
String st = "ABC 'DE FG' 22";
String[] tempArr = st.split(" ");
String tempstr = "";
LinkedList<String> templist = new LinkedList<String>();
boolean add = false;

for (String string : tempArr) {
	if(string.startsWith("'")){
		tempstr = string;
		add = true;
	}else if(string.endsWith("'")){
		tempstr += " " + string;
		templist.add(tempstr);
		add = false;
	}else if(add){
		tempstr += " " + string;
	}else{
		templist.add(string);
	}
}

String[] test = (String[])templist.toArray(new String[0]);

Funktioniert auch, ist aber lange nicht so schön wie deine Lösung Slater..
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Regular Expression Allgemeine Java-Themen 16
H Regular Expression Allgemeine Java-Themen 11
M Regular expression Allgemeine Java-Themen 5
H Regular Expressions: beste Methode? Allgemeine Java-Themen 5
B Regular Expression und Matcher Allgemeine Java-Themen 3
S Java Regular Expressions Allgemeine Java-Themen 2
MrMilti Gruppenreferenz in einer Regular Expression Allgemeine Java-Themen 3
S Regular Expressions in Java Allgemeine Java-Themen 3
MQue Regular Expr Allgemeine Java-Themen 15
S Java Regular Expression Allgemeine Java-Themen 2
M Java Regular Expression für Mathe-String (= 2+4*3+2) Allgemeine Java-Themen 7
G Regular Expression Allgemeine Java-Themen 8
D Regular Expression Mit Punkt und Zahl Allgemeine Java-Themen 4
T Regular Expression mit n Gruppen Allgemeine Java-Themen 6
G Regular expressions Allgemeine Java-Themen 4
M Regular Expression Allgemeine Java-Themen 2
R Regular expression für '.' Allgemeine Java-Themen 7
M Mal wieder . Regular Expressions Allgemeine Java-Themen 2
M Regular Expression - verschiedene Ausdrücke testen (grep | ) Allgemeine Java-Themen 5
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
RalleYTN Expression Crawling Allgemeine Java-Themen 5
D Variablen C Expression Validator Allgemeine Java-Themen 7
J Expression Language für mathematische Ausdrücke Allgemeine Java-Themen 8
S Syntax Error, insert "AssignmentOperator Expression&amp Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben