2012-03-29 11 views
0

私はその中にあるURLの一部をJavaで正規表現を使用して抽出したいです これは私が試したものですが、ほとんど問題はjava+regexですURLの最後の部分の真ん中と私は私の正規表現が直前に無視して、どのようにそれの後の文字を無視することは考えている:正規表現を使用してURLの特定の部分を抽出する

String regex = "https://www\\.google\\.com/(search)?q=([^/]+)/"; 
String url = "https://www.google.com/search?q=regex+java&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a"; 
Pattern pattern = Pattern.compile (regex); 
Matcher matcher = pattern.matcher (url); 

if (matcher.matches()) 
{ 
    int n = matcher.groupCount(); 
    for (int i = 0; i <= n; ++i) 
     System.out.println (matcher.group (i)); 
} 
    } 

結果がregex+javaかさえregex javaでなければなりません。しかし、私のコードがうまくdidntの...

答えて

3

試してみてください。

String regex = "https://www\\.google\\.com/search\\?q=([^&]+).*"; 
    String url = "https://www.google.com/search?q=regex+java&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a"; 
    Pattern pattern = Pattern.compile (regex); 
    Matcher matcher = pattern.matcher (url); 

    if (matcher.matches()) 
    { 
     int n = matcher.groupCount(); 
     for (int i = 0; i <= n; ++i) 
      System.out.println (matcher.group (i)); 
    } 

結果は次のとおりです。

https://www.google.com/search?q=regex+java&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a 
regex+java 

EDIT

は、印刷前に、すべてのプラスの交換:

for (int i = 0; i <= n; ++i) { 
    String str = matcher.group (i).replaceAll("\\+", " "); 
    System.out.println (str); 
} 
+0

はい、その通りです。 – lonesome

+0

ありがとうございました。とにかく、+と同時に空白を置き換えることはありますか? – lonesome

+0

あなたは 'System.out.println(matcher.group(i).replace( '+'、 ''));' – aioobe

0
String regex = "https://www\\.google\\.com/?(search)\\?q=([^&]+)?"; 
    String url = "https://www.google.com/search?q=regex+java&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a"; 

    Pattern pattern = Pattern.compile(regex); 
    Matcher matcher = pattern.matcher(url); 

    while (matcher.find()) { 

     System.out.println(matcher.group()); 


    } 

これはあなたの仕事をするはずです。

関連する問題