# [Java]Regex Hilfe



## huffle (12. Feb 2014)

Hi,
Ich bin grade verzweifelt. Schon den ganzen morgen versuch ich mich an der Verwendung von Regex in Java.
Ich habe einen String (XML von einer HP), den ich nach einen bestimmten parameter untersuchen möchte.

[XML]
String code = "<xxx:export xmlns:ivaa="xxxxx">
  <xxx:xxx-runtime-xxx chgVersion="1.0" releaseId="xxxx|1.0" promptName="Hinweis4" wordingName="02" promptId="20621" audioName="02" textName="01" wordingId="20874" textId="20875" audioId="20876" hasText="true" audioDate="2014-01-28T10:26:05" language="de-DE" wordingClientName="1000" mimeType="audio/x-wav" textActive="A" audioActive="A" fileSize="138284" productionDate="2014-01-21T00:00:00" promptContainerName="Standard" configurable="true">
    <xxx:text xmlns:xxx="xxx"><![CDATA[Alternativer Hinweis 4 text . Sollte nichts angelegt sein.]]></xxx:text>
  </xxx:ivaa-runtime-xxx>
</xxx:export>"
[/XML]

Ich brauche aus dieser Variable aber nur die audioId.
Also alles zwischen (audioId=") und (audioId="\d*") 
audioId="20876"


ich versuche's grade mit 

```
Pattern pattern = Pattern.compile("(audioId=\")\\d+\"");
Matcher matcher = pattern.matcher(code);
            
while(matcher.find()){
     System.out.println("..: "+ matcher.find(1));
}
```

kann mir jemand weiterhelfen? ich steh auf'm schlauch :cry:


Edit:
bisher hatte ich es einfach mit 

```
audioId=code.substring(code.indexOf("audioId=\"")+9, code.indexOf("hasText=")-2);
```
 gemacht. Aber das ist mir zu dirty :-/ daher kam ich auf Regex.


----------



## huffle (12. Feb 2014)

regex101
und rumspielen brachte mich hierzu: 


```
String regex = "audioId=.(\\d*).";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(code);
            while (matcher.find()) {
//                System.out.print("Start index: " + matcher.start());
//                System.out.print(" End index: " + matcher.end() + " ");
                String oa=matcher.toMatchResult().group(1);
                System.out.println("_Pattern: "+oa);
```

Vlt etwas unschön, aber die "toMatchResult" hat den durchbruch gebracht -.- :bloed:


----------



## chalkbag (25. Feb 2014)

Etwas in der Richtung


```
./Element/Element [@audioID]
```

hilft dir nicht weiter?

(Element ist nur ein Beispiel für die Elemente, alternativ auch .//.[@audioID] )


----------



## HarleyDavidson (26. Feb 2014)

Mit


```
Pattern pattern = Pattern.compile( "(audioId=\")(\\d+)(\")" );
        Matcher matcher = pattern.matcher( s );

        while (matcher.find())
        {
            System.out.println( matcher.group() );
        }
```

würdest du die Ausgabe


```
audioId="20876"
```

bekommen. Reicht dir das oder benötigst du nur die Zahl?


----------

