我有這個代碼,但它似乎並沒有工作。Java的正則表達式不匹配?
Pattern pattern=Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);");
Matcher matcher=pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com");
System.out.println(matcher.matches());
有人會知道爲什麼嗎?
我有這個代碼,但它似乎並沒有工作。Java的正則表達式不匹配?
Pattern pattern=Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);");
Matcher matcher=pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com");
System.out.println(matcher.matches());
有人會知道爲什麼嗎?
Matcher#matches()方法嘗試匹配整個輸入序列與模式。
Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);.*$"); //true
Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);"); //false
嗯,不知道它匹配了整個序列,謝謝。 – Isaac
假設你的目標是提取IMGURSESSION
:
import java.util.regex.*;
Pattern pattern = Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);.*");
Matcher matcher = pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com");
if (matcher.find()) {
System.out.println(matcher.group(1));
}
只要確保你在比賽中把所有的圖案在年底,以滿足「匹配」的語義。
匹配方法匹配整個輸入字符串。
如果你只匹配一個子序列,你可以使用find()方法。
3點不同的方式來匹配一個匹配的Java文檔的解釋: http://download.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html
沒有什麼錯的正則表達式本身。當我用[RegexBuddy](http://www.regexbuddy.com/)測試它時,它工作。 –
我知道。我知道正則表達式足以知道它會起作用。和RegexBuddy - 40美元!瘋!我只是堅持http://gskinner.com/RegExr/ – Isaac