java正则表达式

东方柏 2015-04-11 05:00:05
请大家帮忙看看:
public static void test00(){
String str = "Windows3.1";
String regex = "Windows(?!95|98|NT|2000)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
System.err.println(m.matches());
}

打印的结果是false,但是按照java正则表达式语法这个结果不应该是true吗
这是我查的语法:
(?!pattern):正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。

这个是什么问题呢
...全文
135 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂熊猫人 2015-04-12
  • 打赏
  • 举报
回复
能匹配到Windows不代表能匹配整个Windows3.1! matches()方法是要匹配整个字符串,才返回true; 如果你想匹配Windows,那么m.find()是true的,之后m.group()就是匹配到的内容了 while(m.find()){ System.out.println(m.group());//这里会打印出Windows }

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧