2017-11-24 5 views
-4

Ich mag würde alle Urls und extrahieren "rel" Informationen in dieser Zeichenfolge zugeordnet:Java: Wie extrahieren Informationen "rel =" self "" mit regex

<https://api-staging.xxx.com/v1/users>; rel="self", <https://api-staging.xxx.com/v1/users?page=1,0>; rel="next" 

Also habe ich begonnen mit:

Pattern mentionPattern = Pattern.compile("<(.+?)>"); 
Matcher mentionMatcher = mentionPattern.matcher(url); 

Es funktioniert perfekt für URL, aber ich weiß nicht, wie "rel" Informationen zu extrahieren. In diesem Beispiel möchte ich "self" und "next" extrahieren.

Vielen Dank Jungs

+0

Nicht Ihre Down-Wähler, aber wenn Sie HTML sind Parsen, warum nicht einen dedizierten HTML-Parser verwenden? Oder wenn XML, gleich: Warum nicht einen dedizierten XML-Parser verwenden? –

+2

Mögliches Duplikat von [Regex Alle Zeichen zwischen zwei Zeichenfolgen abgleichen] (https://stackoverflow.com/questions/6109882/regex-match-all-characters-between-two-strings) – BackSlash

+0

Haben Sie sich [die Methoden von Matcher angesehen ] (https://docs.oracle.com/javase/9/docs/api/java/util/regex/Matcher.html)? – VGR

Antwort

1

Sie es auf diese Weise tun könnte:

String test = "<https://api-staging.xxx.com/v1/users>; rel=\"self\", <https://api-staging.xxx.com/v1/users?page=1,0>; rel=\"next\""; 
Pattern mentionPattern = Pattern.compile("[<\"](?<content>.+?)[>\"]"); 
Matcher m = mentionPattern.matcher(test); 
while(m.find()) { 
    System.out.println(m.group("content")); // using named groups 
} 

Diese Drucke:

https://api-staging.xxx.com/v1/users 
self 
https://api-staging.xxx.com/v1/users?page=1,0 
next 
Verwandte Themen