正则表达式笔记

正则表达式是一种对字符串进行处理的强大技术

不止是在java中,在其他语言中也有应用

代码

package com.chen.regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*快速入门*/
public class Regexp {


    public static void main(String[] args) {
        String content="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平台。";
        //
        //创建一个Pattern对象,模式对象,可以理解成就是一个正则表达式对象,匹配模式就是传入的字符串
        Pattern pattern = Pattern.compile("[a-zA-Z]+");
       /* Pattern pattern = Pattern.compile("[0-9]+");*/
        //创建一个匹配器对 Pattern pattern = Pattern.compile("[a-zA-Z]+");
        //理解 :就是 matcher匹配器按照pattern(模式/样式) 到content中 匹配
        //找到返回true,else false
        Matcher matcher = pattern.matcher(content);

        //循环匹配
        while(matcher.find())
        {
//匹配内容放到m.group(0);
            System.out.println("找到: "+ matcher.group(0));

        }

        //1如果正则表达式有分组,如果没有就不会有group(0)之外的
        //group(0)匹配到的全部字符串
        //group(1) 第一组
        //group(2)第二组
        //。。。不能越界
        //底层group
        // 数组groups[0] 放字符串匹配到的起点
        //groups[1]放字符串的终点+1;
        //groups[2]放第一组的起点
        //groups[3]放第一组的终点+1;依此类推,直到最后一组

    }










}

patten中的字符串就是匹配模板

对于一些特殊的字符,我们在使用时要使用转义字符,因为有些符号有特殊意义,比如()这个符号就被用于表示“分组”了。

需要使用转义字符的:.     *   +   ( )  $  /  \ ? [ ] ^  { }

字符匹配符:

 

 

java正则表达式默认区分字母大小写,如何实现不区分大小写

加(?!)

(?!)abc表示abc 不区分大小写

a(?!)ba 表示 ba不区分大小写

选择匹配符:

 

限定符:

 

这些限定符对前面的第一个字符生效,当然可以用括号括起来,形成一个分组,然后对这个分组生效。

限定符

 

定位符

 

常用分组

 下面的实际是对分组起了 一个别名,这样matcher就重写了一个一个方法,就是group( String name)方法提供了,可以通过别名获取分组的匹配结果,不只是只能通过“1 .2 3”这样的序号返回

分组结果。

 这些是特殊的分组,这些 分组是不会被捕获的,也就是结果不会分组存在group是[1].gruo[2]...

中。

Pattern 正则表达式对象类

 Pattern的matches方法:这个方法判断字符串是否是完全匹配,他在底层是创建matcher对象

调用了matcher的matches方法

 取消默认的贪婪匹配

在字符串后面添加“+?”

例子:

String regStr="\\d+?";

 

 分组、捕获、反向引用

反向引用:对于分组的我们可以在后面对它进行引用,这个分组是严格按照()来的,没有()

就是一个组。

 

 

String 中的很多方法都是支持正则表达式,如split(),replaceAll()方法,这样极大方便了我们进行编程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值