A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 靖美专 黑马帝   /  2012-3-1 14:32  /  2123 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

表达式 "\bend\b" 在匹配 "weekend,endfor,end" 时,匹配结果是:成功;匹配到的内容是:"end";匹配到的位置是:开始于15,结束于18
可以写个java程序验证一下吗??我的验证false..

4 个回复

正序浏览
本帖最后由 欧阳博 于 2012-3-2 13:29 编辑

刚查了api文档    String类里就有matches()的方法,
boolean matches(String regex)
          通知此字符串是否匹配给定的正则表达式。

看来可以直接String.matches(正则表达式), 但匹配的是整个字符串,   
回复 使用道具 举报
靖美专 发表于 2012-3-2 11:40
class   A{
  public  static  void  main (String[] args)
    {   String reg = "\\bend\\b";

Java的正则表达式是由Pattern和Matcher类共同实现的。Pattern对象表示编译的正则表达式,这个不像javascript,我在JS里能直接str.match(reg),返回的是它的匹配内容,
Pattern pattern = Pattern.compile("\\bend\\b");  
        String s = "weekend,endfor,end";  
        Matcher m = pattern.matcher(s);
        boolean b = m.matches();
        System.out.println(b); // 这里为什么会输出false,因为matches( )的前提是Pattern匹配整个字符串,你把上面改为s = "end" 就会输出true,如果你只是想验证s里面是否有上面正则的匹配,就用Matcher.find( )把,它返回匹配内容,不为空就true呗
回复 使用道具 举报
欧阳博 发表于 2012-3-1 15:13


class   A{
  public  static  void  main (String[] args)
    {   String reg = "\\bend\\b";
                String str = "weekend,endfor,end";

               

               
                System.out.println(str.matches(reg));
        }
}
这个程序咋不能匹配啊...无解....:'(
回复 使用道具 举报
  1. Pattern pattern = Pattern.compile("\\bend\\b");  //\\b转移啊
  2.         String s = "weekend,endfor,end";  
  3.         Matcher matcher = pattern.matcher(s);  
  4.         if (matcher.find())  
  5.         {
  6.                 if(matcher.group()!=null)//group()方法就用来返回包含了所匹配文本的字符串,有匹配的就为true呗
  7.                 {
  8.                         System.out.println("匹配结果是:"+true);
  9.                 }
  10.                 System.out.println("匹配到的内容是:"+matcher.group());  
  11.                 System.out.println("开始于:"+matcher.start());  
  12.                 System.out.println("结束于"+matcher.end());  
  13.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马