2013-08-18 3 views
0

нужно разобрать эту строкуАнализировать URL Hash с Regex

#Login&oauth_token=theOAUTHtoken&oauth_verifier=12345 

Где мне просто нужно, чтобы получить oauth_token и oauth_verifier ключ + значения, то, что это самый простой способ сделать это с Regex?

+6

обучения регулярных выражений. –

+3

Со всеми репутацией у вас есть, вы должны знать лучше, чем задавать вопрос без кода или усилий, показанных ... – Jerry

+0

Помогает ли это: - http://stackoverflow.com/questions/27745/getting-parts-of-a -url-regex ??? –

ответ

2

Это будет делать это, вы не указали, как вы хотите свой вывод данных, так что я их отделено запятой.

import java.util.regex.*; 

class rTest { 
    public static void main (String[] args) { 
    String in = "#Login&oauth_token=theOAUTHtoken&oauth_verifier=12345"; 
    Pattern p = Pattern.compile("(?:&([^=]*)=([^&]*))"); 
    Matcher m = p.matcher(in); 
    while (m.find()) { 
     System.out.println(m.group(1) + ", " + m.group(2)); 
    } 
    } 
} 

Регулярное выражение:

(?:   group, but do not capture: 
    &   match '&' 
    (   group and capture to \1: 
    [^=]*  any character except: '=' (0 or more times) 
    )   end of \1 
    =   match '=' 
    (   group and capture to \2: 
    [^&]*  any character except: '&' (0 or more times) 
    )   end of \2 
)    end of grouping 

Выход:

oauth_token, theOAUTHtoken 
oauth_verifier, 12345 
0

Это должно работать:

String s = "#Login&oauth_token=theOAUTHtoken&oauth_verifier=12345"; 
Pattern p = Pattern.compile("&([^=]+)=([^&]+)"); 
Matcher m = p.matcher(s.substring(1)); 
Map<String, String> matches = new HashMap<String, String>(); 
while (m.find()) { 
    matches.put(m.group(1), m.group(2)); 
} 
System.out.println("Matches => " + matches); 

ВЫВОД:

Matches => {oauth_token=theOAUTHtoken, oauth_verifier=12345}