正则表达式

概述

正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。

好处: 用了一些专门的符号来代表代码,书写起来更为简单。
弊端: 因为都是一些符号组成的表达式,所以阅读起来可读性不高。而且先要把符号学完。

语法

正则表达式语法

正则符号:

  1. 中括号:[判断字符位上的内容]
  2. 预定义字符:都带着反斜线
    .:任意字符
    \d:数字。[0-9]
    \D:非数字。[^0-9]
    \w:单词字符。[a-zA-Z_0-9]
  3. 边界字符:
    ^:行开头
    $:行结尾
    \b:单词边界
  4. 数量词:必须结合内容
    X?:X内容出现0次或1次
    X*:X内容出现0次或多次
    X+:X内容出现1次或多次
    X{n}:X内容出现n次
    X{n,}:X内容出现至少n次
    X{n,m}:X内容出现n到m次

常见操作字符串的功能

(/regex/src/io/github/xenaliu/d20200115/function/RegesFunctionDemo.java)

  1. 匹配:其实用的就是String类中的matches方法。

  2. 切割:其实用的就是String类中的split方法。

  3. 替换:其实用的就是String类中的replaceAll方法。

  4. 获取:
    (/regex/src/io/github/xenaliu/d20200115/function/PatternDemo.java)

pattern:正则表达式的编译表现形式

每一个正则表达式在编译后都是一个pattern对象。

//1.将正则表达式的字符串格式先通过Pattern中的compile方法编译成Pattern正则表达式对象。
//Pattern的作用是将正则字符串封装成正则对象
Pattern p = Pattern.compile("a*b");
//2.要想用这个规则对字符串进行操作,还需要通过正则对象matcher方法和指定的字符串关联,并获取匹配器对象Matcher
//真正将规则作用到字符串上的对象是匹配器Matcher
Matcher m = p.matcher("aaaaab");
//3.用匹配器对象Matcher的功能(方法)对字符串操作
m.matches();//匹配整个
m.lookingAt();//从头开始查找
m.find();//查找下一个

练习

  1. 我我.....我我...要.要...要要....学学......学...学.学学.....编编.....编.编编编...程程.....程程程...程..程
    还原成:我要学编程
  1. 按照ip地址的分类进行从小到大的排序
    127.0.0.1 3.3.3.3 192.168.104.23 10.10.10.10
  1. 校验电子邮箱地址E-mail
    (/regex/src/io/github/xenaliu/d20200115/regextest/RegexTest.java)
  1. 网络爬虫
    (/regex/src/io/github/xenaliu/d20200115/regextest/NetSpider.java)

你可能感兴趣的:(正则表达式)