正则表达式的注意事项

1、正则表达式的测试工具:regexpBuddy
2、.:小数点可以匹配任意一个字符(.可匹配\r,但是不能匹配\n即换行符,如果是单行模式,则会改变.的含义,此时.可匹配包含\n的所有字符),如果要匹配包括\n在内的所有 字符,一般使用[\s\S]
3、正则表达式的特殊符号,被包含到中括号中,则失去特殊意义,除了^、-之外,例如[\d.-+]将匹配:数字、小数点、+、-。
4、字符边界:匹配的不是字符而是位置,符合某种条件的位置
^:与字符串开始的地方匹配
KaTeX parse error: Undefined control sequence: \b at position 16: :与字符串结束的地方匹配 \̲b̲:匹配一个单词边界,前面的字符…或者\Aabc\Z
说明:多行模式下^和$的含义会被改变,普通的含义是匹配整个字符串的开头和结尾,在多行模式下匹配的就是每一行的行首和行尾,而\A和\Z他们的含义始终是匹配整个字符串的开头和结尾,多行模式中必定包含 ^ 或 $ 或同时包含,否则即使加了 m,也没有任何意义。
7、选择符和分组:
|:“或”关系,匹配左边或右边
()捕获组:每对括号会分配一个编号,使用()的捕获根据左括号的顺序从1开始编号。捕获元素编号为0的第一个捕获是由整个正则表达式模式匹配的文本。
说明:例如正则表达式为([a-z]+)([0-9]+),校验文本为aa232**ssd
则m.group()或m.group(0)为aa232,m.group(1)为aa,m.group(2)为232
(?:Expression)非捕获组:一些表达式中,不得不使用(),但又不需要保存()中子表达式匹配的内容,这时可以用非捕获组来抵消使用()带来的副作用。
例如正则表达式为(?:[a-z]{2}),校验的字符串文本为gogo,则这个正则表达式不会保存go的值,反之([a-z]{2})则会 保存go的值。
反向引用(\nnn):通过反向引用,可以对分组已捕获的字符串进行引用。
例如:正则表达式为([a-z]{2})\1,校验的文本有goto、gogo、toto、togo
则匹配的文本有gogo、toto
8、正则表达式matcher.group用法
博客参考地址:正则表达式matcher.group用法
9、正则表达式 边界:\b 和 \B的用法
博客参考地址:
正则表达式 \b
正则表达式 边界:\b 和 \B
在这里插入图片描述
10、匹配中文字符的正则表达式子:[\u4e00-\u9fa5]

11、java中正则表达式Pattern与Matcher类使用详解(find、group)

11.1 find方法与group、start、end等方法是一起使用的。如果find方法返回false,说明没找到子串,此时调用group会抛异常。
11.2 matcher.group(1)怎么获取的呢?匹配成功的字串有多个时,返回最后一个匹配成功的子串。
11.3 matches()方法用于检查整个输入字符串是否与给定的正则表达式匹配,相反,find()方法用于在输入字符串中查找与给定的正则表达式匹配的子字符串。它在输入字符串中逐个查找匹配项,只要找到第一个匹配项,find()方法就会返回true。即使输入字符串后面还有其他匹配项,find()方法也不会尝试继续匹配。
11.4 matcher.start()和matcher.end()包左不包右

    public static void main(String[] args) {
        String sourceStr = "http://www.baidu.com http://www.sina.com 1147391211@qq.com http://www.tencent.com " +
                "18521716520";
        //正则表达式为
        Pattern compile = Pattern.compile("http://([a-z]+\\.)+[a-z]+");
        Matcher matcher = compile.matcher(sourceStr);
        boolean matches = matcher.matches();
        boolean find = matcher.find();
        if (find) {
            String group = matcher.group();
            String group1 = matcher.group(1);
            int start = matcher.start();
            int end = matcher.end();
            System.out.println();
        }
    }

参考地址:java中正则表达式Pattern与Matcher类使用详解(find、group)

12、正则表达式反向引用例子

 public static void main(String[] args) {
        //正则表达式为
        String str = "a.bddbdd".replaceAll("(bdd)\\1","abb");
        System.out.println(str);
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值