• Java API 之 正则表达式


    一、基本概念

    在项目中我们经常性做的一件事是“匹配”字符串

    比如:

      1、我们要验证用户输入的手机号是否合法?

      2、验证设置的密码是否符合规则?

      3、或者替换指定字符串中的一些内容。

    这么一看,似乎正则表达式就是在查找、处理字符串

    二、如何使用

    1、首先,我们需要定义一个模板(Pattern),这个模板描述了需要匹配的字符串的规则,这就是正则表达式。

    2、模板有了,我们需要将要匹配的内容和模板一起创建一个匹配器(Matcher)。

    3、最后执行匹配获得返回的结果。

    按照以上的步骤,我们写一个简单的示例:

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * @author lay
     * @date 2018/4/10.
     * @time 17:19
     */
    public class RegexDemo {
        public static void main(String[] args) {
            // 写一个正则模板
            Pattern pattern = Pattern.compile("name");
            // 获取一个匹配器
            Matcher matcher = pattern.matcher("name");
            // 执行操作
            boolean isMatch = matcher.matches();
            // 打印结果
            System.out.println("isMatch=" + isMatch);
        }
    }

    在这个示例中:

    1、我们使用Pattern类提供的方法compile()编译出正则表达式"name",返回一个Pattern模板类;

    2、通过pattern模板类的matcher()方法获取匹配器,传入待处理的内容"name";

    3、匹配器调用方法matches()返回匹配结果。

    4、最后打印结果为:isMatch=true

    三、学习内容

    由以上的示例,我们可以了解到,对于Java的正则表达式我们需要学得的内容有:

    1、正则表达式如何写;

    2、Pattern类的使用;

    3、Matcher类的使用;

    四、正则表达式如何写;

    在查看API文档的时候,介绍正则表达式语法的是这样的:d 表示数字,s表示空白字符

    那问题在于,我们使用Pattern类的complie()方法来创建模板,而compile()方法需要传入的是一个字符串,例如:

    Pattern pattern = Pattern.compile("name");

    这样的话我们要怎么写正则表达式语法呢?如下:

    Pattern pattern = Pattern.compile("\d");

    我们看到,这里使用了 "\d" 而不是语法说的 "d"。我们可以这样理解:在 Java 中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。

    例如:

    d -> \d

    s -> \s

    w -> \w

    正则表达式的语法可以参考:

    1、http://www.runoob.com/java/java-regular-expressions.html

    2、http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

    五、Pattern类和Matcher类的使用

    前面我们说了,pattern类是为了编译模板,matcher用于构建匹配器。其实就是示例化类,然后调用类的方法。比如:

    1、匹配是否有某个字符串:boolean isMatched = matcher.matches();

    2、替换字符串:String newStr = matcher.replaceAll("替换的内容");

    六、总结

    正则表达式即是为了匹配处理字符串而出现的,我们要做的即:

    1、构造模板;2、构造匹配器;3、使用匹配器提供的方法处理字符串;

  • 相关阅读:
    Chef学习之一:Windows上安装Chef Workstation
    AWS之S3实践
    Ubuntu下解决Make的:cc1plus: warnings being treated as errors
    PLSQL中over(partition by .. order by ..)的使用
    GACutil.exe的使用
    在ASP中如何调用EXE可执行文件在客户端运行
    css中空格和“.”的区别
    神奇的Service无法onCreate的问题
    android 找不到模拟器错误
    Openfire 添加GateWay
  • 原文地址:https://www.cnblogs.com/lay2017/p/8781327.html
Copyright © 2020-2023  润新知