1 / 16
文档名称:

正则表达式基础及Java正则表达式应用.docx

格式:docx   大小:1,311KB   页数:16页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

正则表达式基础及Java正则表达式应用.docx

上传人:mh900965 2018/1/17 文件大小:1.28 MB

下载得到文件列表

正则表达式基础及Java正则表达式应用.docx

相关文档

文档介绍

文档介绍:正则表达式基础及Java正则表达式应用
陈敏刚
【引言】由于研究需要对日志信息、视频信息作大数据的分析,特整理以下正则表达式的各种用法,比如如何提取Apache日志信息中的IP地址和访问时间,如何设计简单的网络爬虫程序等,主要通过Java语言描述,其它语言如Python思路也基本相通。
正则表达式基本概念
正则表达式,也叫 Regular Expressions,它实际上是用来搜索、匹配字符串的模式,是一种强大而灵活的文本处理工具。
在Java中要使用正则表达式,则需要import ,一般与Java I/O联合使用
正则表达式一般要表达三个要素。
(1)要匹配的字符,如[0-9];
(2)字符的数量或者有几个这样的字符,如{2,4},即2-4个字符,需要用大括号括起来。
(3)字符的位置在哪儿?如\b表示字符的边界,border。
要熟悉以上正则表达式的基本元素,可以对应于正则表达式的要素,分为字符类、数量类和位置类。
(1). 代表1个字符的通配符
比如,“tan,ten,ton,tpn”等
(2)[]代表字符集,只有方括号里指定的字符才能参与匹配,方括号内只能匹配单个字符,但可用连字符-来表示范围,如[0-9]表示0-9中的一个数字;
比如,t[aeiou]n,可匹配“tan,ten,ton”,但不匹配tpn、toon等。
[^]表示排斥性字符集。
比如,[^x][a-z]+,可匹配除x开头的所有单词。
(3)()用来分组,在()内可以使用“|”操作表示“或”,方括号[]不能用“|”
比如,t(a|e|i|o|u|oo)可匹配“tan,ten,ton”,还可匹配toon。
(4)^表示起始位置、\b表示单词边界
(a) ^的基本用法
第一个例子的匹配是成功的,这是因为模式占据了整个输入的字符串。
第二个例子失败了,是由于输入的字符串在开始部分包含了额外的空格。
第三个例子指定的表达式是不限的空格,后跟着在行尾的 dog。
第四个例子,需要 dog 放在行首,后面跟的是不限数量的单词字符。
(b)对于检查一个单词开始和结束的边界模式(用于长字符串里子字符串),这时可以在两边使用\b,例如\bdog\b。
(c)对于匹配非单词边界的表达式,可以使用\B来代替:
(d)对于需要匹配仅出现在前一个匹配的结尾,可以使用\G:
星号*表示 0个或多个
加号+表示 1 或多个
问号?表示0个或1个
n就是写个数字表示重复多少次
[0-9]+ 来查找年份,字符为数字,数字出现1个或多个。
由于正则表达式比较难用,所以引入一些简写方式,比如\d表示数字(digit)[0-9],\s表示空白符(space)、\w表示单词字符(word)[a-zA-Z_0-9]。
正则表达式写起来还是比较麻烦,因此经常需要利用工具,比如QRe,
\b(href)=(‘[^’]+’)
上面正则表达式的解释:
两个圆括号()代表两个group
\b表示单词边界,(href)表示group1
(‘[^’]+’)表示group2,字符是‘开始,’结束,中间1个或多个非’字符,整个匹配字符串的称为group0
正则表达式的基本应用
Java中正则表达式,,这个包主要有两个类,分别是Pattern类(模式类)和Matcher类(匹配类)。
Pattern 对象表示一个已编译的正则表达式。Pattern 类没有提供公共的构造方法。要构建一个模式,pile 方法,它将返回一个 Pattern 对象,这个方法接受正则表达式作为第一个参数,把正则表达式字符串编译到一个用于处理匹配的模式对象中。
Matcher 是在输入的字符串中定位模式的匹配的对象与 Pattern 相似,Matcher 也没有定义公共的构造方法,需要通过调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

//将正则表达式”[,\\s]+”编译成模式类对象p,\\s表示空格,并用了\表示转义符
Pattern p = pile(“[, \\s]+”);
//调用p的split方法分割字符串
String[] result = ( "one,two, three four , five ");

//开始的^表示字符串开始,结尾的$表示字符串结尾
//@前表示1到多个非@字符
//@后“[\\w]+”表示1到多个word,\\w表示\w的转义
//“(\\.[\\w]+)*”表示多个”.word”的模式
String