黑马程序员技术交流社区

标题: 正则表达式用java程序验证一下 [打印本页]

作者: 靖美专    时间: 2012-3-1 14:32
标题: 正则表达式用java程序验证一下
表达式 "\bend\b" 在匹配 "weekend,endfor,end" 时,匹配结果是:成功;匹配到的内容是:"end";匹配到的位置是:开始于15,结束于18
可以写个java程序验证一下吗??我的验证false..
作者: 欧阳博    时间: 2012-3-1 15:13
  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.         }
复制代码

作者: 靖美专    时间: 2012-3-2 11:40
欧阳博 发表于 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));
        }
}
这个程序咋不能匹配啊...无解....:'(
作者: 欧阳博    时间: 2012-3-2 13:07
靖美专 发表于 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-2 13:25
本帖最后由 欧阳博 于 2012-3-2 13:29 编辑

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

看来可以直接String.matches(正则表达式), 但匹配的是整个字符串,   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2