Java正则表达式不匹配?

5
我有这段代码,但似乎没有起作用。
Pattern pattern=Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);");
Matcher matcher=pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com");
System.out.println(matcher.matches());

有人知道为什么吗?

正则表达式本身没有问题。我在 RegexBuddy 上测试过,它可以工作。 - Nithin Philips
1
我知道。我对正则表达式的了解足以知道它会起作用。而RegexBuddy要价40美元!疯了!我只使用http://gskinner.com/RegExr/。 - Isaac
3个回答

8

Matcher#matches()方法试图将整个输入序列与模式进行匹配。

Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);.*$"); //true
Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);"); //false

2

1
假设您的目标是提取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));
}

只需确保在末尾放入一个匹配所有模式以满足“匹配器”语义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接