有关正则表达式包使用的简单问题

1111 2006-05-07 10:48:21
我要求判断一个字符串中是否包含cat 根据在网上查的资料 写出程序如下

import java.util.regex.*;

class Test {
public static void main(String[] args) {
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("tomcat");
System.out.print(m.matches());
}
}
结果为false 除非改成这样 p.matcher("cat"); 结果才为true

为什么会这样?正则表达式的写法应该就是cat啊,为什么会不匹配呢?给我的感觉要完全匹配他才承认,那如果这样的话定位符 ^ 的意义是什么呢?比如Pattern.compile("^cat"); 应该是匹配cat开头的所有字符串,但是我试了一下,也只有cat完全匹配结果才为true。很郁闷啊,望指点一下


...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
1111 2006-05-07
  • 打赏
  • 举报
回复
谢谢 搞定 原来是用的方法的问题 不是表达式的问题
didoleo 2006-05-07
  • 打赏
  • 举报
回复
还有一种方式确定一个字符串是否准确地匹配了一个模式。

Pattern p = Pattern.compile("\\A"+"cat"+"\\z");
Matcher m = p.matcher("tomcat");
System.out.print(m.matches());
didoleo 2006-05-07
  • 打赏
  • 举报
回复
Matcher.matches() ;
正如你所料,是确定一个字符串是否准确地匹配了一个模式。
didoleo 2006-05-07
  • 打赏
  • 举报
回复


public static void main(String[] args) {


Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("tomcat");
if(m.find()){
System.out.println("true");
}else{
System.out.println("false");
}

//System.out.print(m.matches());
}

62,616

社区成员

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

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