正则表达式REGULAR EXPRESSIONS
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
正则表达式Regular Expressions
作用:字符串处理器
从Unix开始流行,Perl语言的流行源于对正则表达式的处理
用途:
1.字符串的匹配
(a)
“abc”匹配“...”
String类中有matches()方法,涉及到Pattern类
(b)
[]——中括号表示取值的域
{}——大括号表示取值的个数
但是为什么又要套来套去呢?
分析:
1.
Pattern p=pile("a*b");
编译构成一个规范(正则表达式)对象
2.
Matcher m=p.matcher("aaaaab");
Pattern对象调用方法,测试内容是否匹配规范,返回Matcher对象3.
p(m.matches())
类似于System.out.println的功能
后面定义了一个接受对象(万物皆对象)的结果输出函数
注意:该方法是static静态的,在类加载的同时加载,可以在类的内部直接调用如下代码也可以,但是要经过一层输出语句
2.字符串的查找
建立在匹配
3.字符串的替换
建立在查找
输出:a----a
到Pattern类中查看
例子:
升级,规定位置
Matcher的方法
find()
寻找符合正则表达式的子串
matches()
正则表达式匹配整个字符串
分析一个字符串,分析到哪,就吃到哪,吐不出来
lookingAt()
每次找都是首字符开始找
reset()
重置匹配器,也就是将matches吃掉的字符吐出来,原先该什么样,就什么样
start()
end()
找匹配的起始和结束位置(索引)
如果没有找到的,就会报Exception
group()
分组——同时输出
应用:
用于有定位地抓取数据
1.网页中email地址的抓取——相当于蜘蛛程序
坑死一逼的:天杀的,咋就给忘了!
2.代码统计空行、代码行、注释行
修改:
注释:
这里不添加成:
因为readline方法已经将\n去除掉了
添加功能:
文件夹下有文件夹,应用递归方法查询认识字符
.*+?……
到Pattern类中查看
例子:
范围
3取交集
认识\s\w\d
当用正则表达式时,都要用两个\\替代,避免\\成\,后面在正则
表达式中\’’又成了转义特殊字符了
注意:后面括号中的值就是正则表达式
边界处理
\b单词边界,像space(空格)、\t、\r等等特殊字符都算是
空白行
练习:
本身,空格也算是字符。联系System.out.println(“”+18)的加号两边就有空格Email地址的正则表达式
除了使用{}内置个数,也可以使用+号,但是这样会导致范围界限不清楚。呈现出
例如:
1.IP地址是否正确
2.从网页中揪出email地址
贴吧中邮箱地址的群发
3.从网页中揪出链接等
类:
ng.String
2.java.util.regex.Pattern
3.java.util.regex.Matcher
Qulifiers——限定,修饰
贪婪:
懒惰:
占有的:
非捕获组
不是一个组,只是简单的限定
……还有很多
向前引用
Flag简写