概述
正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
好处: 用了一些专门的符号来代表代码,书写起来更为简单。
弊端: 因为都是一些符号组成的表达式,所以阅读起来可读性不高。而且先要把符号学完。
语法
正则符号:
- 中括号:
[判断字符位上的内容]
- 预定义字符:都带着反斜线
.
:任意字符
\d
:数字。[0-9]
\D
:非数字。[^0-9]
\w
:单词字符。[a-zA-Z_0-9] - 边界字符:
^
:行开头
$
:行结尾
\b
:单词边界 - 数量词:必须结合内容
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
)
匹配:其实用的就是
String
类中的matches
方法。切割:其实用的就是
String
类中的split
方法。替换:其实用的就是
String
类中的replaceAll
方法。获取:
(/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();//查找下一个
练习
- 我我.....我我...要.要...要要....学学......学...学.学学.....编编.....编.编编编...程程.....程程程...程..程
还原成:我要学编程
- 按照ip地址的分类进行从小到大的排序
127.0.0.1 3.3.3.3 192.168.104.23 10.10.10.10
- 校验电子邮箱地址E-mail
(/regex/src/io/github/xenaliu/d20200115/regextest/RegexTest.java
)
- 网络爬虫
(/regex/src/io/github/xenaliu/d20200115/regextest/NetSpider.java
)