Einzelnen Beitrag anzeigen

Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#24

AW: Herauslösen eines Strings im string

  Alt 4. Mär 2014, 00:06
dann los... wie können reguläre Ausdrücke bei diesem Problem helfen? Ich dachte immer die wären was fürs Suchen....
Ich mach es jetzt mit der entsprechenden Java-Implementierung, da ich die am häufigsten benutzt habe.
Das Geheimnis sind Capturing-Groups, wie sie von vielen Implementierungen angeboten werden.

Ausgehend von den Beispielen:
Code:
99,10,Text1=Text2
99,Text1=Text2
Komm ich zu diesem Ausdruck:
Code:
([0-9]+),(?:([^,]*),)?([^=]*)=(.*)
Die Capturing-Groups sind:
  1. ([0-9]+)
  2. ([^,]*)
  3. ([^=]*)
  4. (.*)
Sie lassen sich dann einzeln auslesen:
Code:
import java.util.regex.*;

class PatternTest {

   static public void main(String[] args)
   {
      if (args.length == 1) {
         Pattern   pattern = Pattern.compile("([0-9]+),(?:([^,]*),)?([^=]*)=(.*)");
         Matcher matcher = pattern.matcher(args[0]);
         if (matcher.matches()) {
            // group 0 is the whole match
            for (int i = 1; i <= matcher.groupCount(); i++) {
               System.out.println(matcher.group(i));
            }
         } else {
            System.out.println("No match!");
         }
      } else {
         System.out.println("Nothing to match!");
      }
   }
}

Gut, ich gebe zu: Das hat jetzt etwas länger gedauert als es sollte.
Ich musste nochmal die nötigen Klassen und die Regex-Syntax nachgooglen

Geändert von BUG ( 4. Mär 2014 um 00:18 Uhr)
  Mit Zitat antworten Zitat