正则表达式基础

正则表达式(regular expression) ->regexp
在这里插入图片描述
很多编程语言都支持正则表达式
\d表示一个任意的数字
示例

		String content = "1994年6、7月间,在经历了一场历时三天的讨论之后,团队决定" +
                "再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着" +
                "Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景" +
                "正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网" +
                "浏览器WebRunner。 [8] \n" +
                "1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态网页能够" +
                "“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且" +
                "能够跨平台运行。于是,世界各大IT企业为此纷纷投入了大量的人力、物力和财力。" +
                "这个时候,Sun公司想起了那个被搁置起来很久的Oak,并且重新审视了那个用软件" +
                "编写的试验平台,由于它是按照嵌入式系统硬件平台体系结构进行编写的," +
                "所以非常小,特别适用于网络上的传输系统,而Oak也是一种精简的语言," +
                "程序非常小,适合在网络上传输。Sun公司首先推出了可以嵌入网页并且可以随同网页" +
                "在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并" +
                "将Oak更名为Java(在申请注册商标时,发现Oak已经被人使用了,再想了一系列名字之后" +
                ",最终,使用了提议者在喝一杯Java咖啡时无意提到的Java词语)。5月23日,Sun公司在" +
                "Sun world会议上正式发布Java和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、" +
                "Oracle、Netscape和微软等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java" +
                "使用许可证,并为自己的产品开发了相应的Java平台。 [9-10] ";
		Pattern pattern = Pattern.compile(str);
        //创建匹配器matcher,按照正则表达式的规则去匹配content字符串
        Matcher matcher = pattern.matcher(content);
        //开始匹配
        while(matcher.find()){
            System.out.println("找到:"+matcher.group(0));
        }
找到:1994
找到:1995

matcher.find()的作用:
(1)根据指定的规则,定位满足规则的子字符串(比如1994)
(2)找到后,将子字符串开始的索引的值保存在matcher的属性 int[] groups;
group[0[=0,将子字符串结束的索引+1的值记录到在group[1] = 4
(3)同时记录oldLast的值为子字符串结束的索引+1的值,即4,即下次执行find方法时,从4开始

group内部方法

/*public String group(int group) {
        if (first < 0)
            throw new IllegalStateException("No match found");
        if (group < 0 || group > groupCount())
            throw new IndexOutOfBoundsException("No group " + group);
        if ((groups[group*2] == -1) || (groups[group*2+1] == -1))
            return null;
        return getSubSequence(groups[group * 2], groups[group * 2 + 1]).toString();
    }
*/

根据group[0]=0和group[1]=4记录的位置,从content开始截取子字符串开始返回,就是【0,4),包含0但是不包含4
如果再次执行find方法,仍然按照上面分析来执行

当在正则表达式中有小括号时,就称为分组,一个括号称为一组
例如,

String str = "(\\d\\d)(\\d\\d)";

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
正则转义符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实现不区分大小写
(?i)abc 表示abc不区分大小写
a(?i)bc 表示 bc不区分大小写
a((?i)b)c 表示b不区分大小写
或者创建Patten对象时指定
在这里插入图片描述
[^abc] 表示不是abc中的任意一个字符
[abcd] 表示abcd中的任意一个字符
\d 匹配任意一个数字
\D匹配任意非数字
\w匹配任意英文字母,数字,下划线
\s匹配任何空白字符
.匹配\n之外的所有字符

在这里插入图片描述
|
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

java匹配是贪婪匹配,即尽量匹配多的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
^写在[]内表示非,写在外面表示 起始字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
正则表达式三个常用类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
反向引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值