美文网首页
Java之正则表达式和String正则Api(完结)

Java之正则表达式和String正则Api(完结)

作者: 如果仲有听日 | 来源:发表于2018-06-29 11:38 被阅读0次

    对正则表达式的学习,千万不要死记硬背,只需要达到查看匹配规则表可以看懂别人的正则表达式、能写出需求的正则表达式即可

    1. 正则表达式的匹配规则

    规则的种类:字符、字符类、预定义字符类、边界匹配器、数量词

    直接引用别人的博文查询匹配规则:

    https://www.cnblogs.com/SQP51312/p/6121744.html

    字符相关规则 边界匹配器 数量词 其他

    2. 正则练习

    2.1 练习一

    写出满足如下匹配规则的字符串:"[0-9]{6,12}"

    解读:匹配6~12位的数字字符串

    "234234"->true

    "42734"->false

    "244424236801" ->true

    "2444242368011" ->false

    2.2 练习二

    写出满足如下匹配规则的字符串:"1[34578][0-9]{9}"

    解读:匹配11位的手机号码,第一位是1,第二位是34578其中一个,之后是9位任意数字

    "15828618018"->true

    "16828618018"->false

    "1582861801"->false

    "158286180188"->false

    2.3 练习三

    写出满足如下匹配规则的字符串:"a*b"

    解读:0个或多个a开始,以b结束的字符串

    "b"->true

    "ab"->true

    "aaaaaaaaaaaaaab"->true

    "bb"->false

    "bab"->false

    "ba"->false

    "cb"->false

    3. String类中三个正则表达式方法

    3.1 字符串匹配:boolean matches(String regexStr)

    3.1.1 检查QQ号码是否合法

    解读不能以0开头,全数字,位数最少5位最多10位

    可以使用易懂的[0-9],也可以使用转义的[\\d],注意这里是两个\, 第一个\将第二个\转成普通\

    public static void checkQQ(String testStr, String regexStr) {

        boolean ret = testStr.matches(regexStr);

        System.out.println(ret);

    }


    3.1.2 检查手机号码是否合法

    解读:1开头,第二位是34578其中一个,总位数是11位

    public static void checkPhone(String testStr, String regexStr) {

        boolean ret = testStr.matches(regexStr);

        System.out.println(ret);

    }

    3.1完整代码

    3.2 字符串切割:String[] splite(String regexStr)

    3.2.1 将字符串根据单个字符来切分

    解读:正则应该只是单个字符即可regexStr = "@";

    public static void splitTest(String testStr, String regexStr) {

        String[] retStr = testStr.split(regexStr);

        for(String str:retStr) {

            System.out.println(str);

        }

    }

    3.2.2 将字符串按照空格切割,空格可能为一个或多个

    解读:正则应该为" +"

    3.2.3 切割ip地址

    解读:正则应该为"\\.",因为一个"."表示任意字符,必须进行转义

    3.2完整代码

    3.3 字符串替换:String replaceAll(String regexStr, String replaceStr)

    将数字替换为#,正则为"[\\d]+" 则连着的数字用一个#表示;"[\\d]"则每一个数字都用#替换

    public static void replaceTest(String testStr, String regexStr) {

        String retStr = testStr.replaceAll(regexStr, "#");

        System.out.println(retStr);

    }

    3.3示例代码

    4 正则高阶练习

    4.1 匹配正确的数字

    4.2 匹配合法邮箱地址

    解读:@前面:数字、字母、_个数不能少于1个

    @后面:数字、字母,个数不能少于1个

    .后面:字母

    “qq.com”、“www.qq.com”、“mp.weixin.qq.com”、“12-34.com.cn”,分析可得域名类似“*@*.*”组成

    第一部分: [a-zA-Z_0-9]+

    第二部分:@

    第三部分:[a-zA-Z0-9]

    第四部分:(\\.[a-zA-Z]+)+

    最后结果:[a-zA-Z_0-9]+@[a-zA-Z0-9](\\.[a-zA-Z]+)+

    相关文章

      网友评论

          本文标题:Java之正则表达式和String正则Api(完结)

          本文链接:https://www.haomeiwen.com/subject/hchgyftx.html