zoukankan      html  css  js  c++  java
  • java正则表达式 3 -- 查找

    用正则表达式执行查找命令,则需要用正则对象,其规则和执行顺序如下:

    指定为字符串的正则表达式必须首先被便以为此类的实例。然后,可将得到的正则对象匹配任意的字符串用于创建Mather对象,执行匹配所涉及的所有状态都驻留在匹配其中,所以多个匹配器可以共享同一个模式。

    查找需要使用的对象:
    Pattern 正则对象
    Matcher 匹配器对象

    因此,典型的调用顺序为:

    Pattern p = Pattern.compile("正则");
    Matcher m = p.matcher("aaaaaab");
    boolean b = m.matchers();

    匹配器要使用到的方法:
    find() 通知匹配器去匹配字符串,查找符合规则的字符串。如果能查找到符合规则的字符串,返回true
    group() 获取符合规则的子串

    下面用代码实现对一段字符串中邮箱的查找,假设邮箱规则:@前:位数为3-18位,首位是不能为0或者下划线的字符,其他位任意字符   @后:2位以上的非下划线字符+(.com .cn .net .com.cn)

     1 public class Demo2 {
     2     public static void main(String[] args) {
     3         //找出邮箱
     4         String str = "联系邮箱:老王-1543644@qq.com;老赵-zhao@sina.com;"
     5          + "Tim-timEmail@gg.net;大明-ming@safe.com.cn;盖茨-gaici@ma.cn";
     6         
     7         String reg = "[a-zA-Z1-9]\w{2,17}@[a-zA-Z0-9]{2,}(\.(com|cn|net)){1,2}";
     8         //指定为字符串的正则表达式必须首先被便以为此类的实例
     9         Pattern p = Pattern.compile(reg);
    10         //使用正则对象匹配字符串用于产生一个mather对象
    11         Matcher m = p.matcher(str);
    12         
    13         while (m.find()) {
    14             System.out.println(m.group());
    15         }
    16     }
    17 }

    补充:

    加入对字符串“ri zhao xiang lu sheng zi yan”查找,查找其中的两个字母组成的子串

    如果直接把正则写成reg="[a-zA-Z]{2}",那么查询结果就会如下:

    ri

    zh

    xi

    lu

    sh

    zi

    ya

    可以看到,不仅查到了组成字符个数为两个的单词,还查到了多个的并且剪切到了前两位。此时就要加入边界匹配器:

    那么我们新的正则就应该是reg="\b[a-zA-Z]{2}\b" ,执行结果为:

    ri

    lu

    zi

  • 相关阅读:
    Atitit  atiMail atiDns新特性 v2  q39
    Atitit.java jar hell解决方案Djava.ext.dirs in ide envi..
    砍价大法
    DWR学习
    什么是WEB 2.0
    XHTML 1.0 Tags 参考
    web.config文件遇到的错误
    JDBC教程之PreparedStatement
    符合W3C标准的target=_blank形式
    dwr 登录实现 (入门知识)
  • 原文地址:https://www.cnblogs.com/K-artorias/p/7355914.html
Copyright © 2011-2022 走看看