|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 零度非安全 于 2017-4-11 12:12 编辑
在 上一讲,我们谈了 Java 正则表达式中的量词、贪婪模式(默认)以及非贪婪模式,你只要把它想象成一条贪吃蛇,
给定范围,有多少它就吃多少,如果忘了可以点上一讲再看一遍消化下,把它转化为自己的东西,学习是自己的事,得一步
一个脚印来,只要把基础打扎实了,那到后面做小项目的时候就轻松了,比如最后我要讲爬虫,但要把正则学完,并且配合
【Java 教程(原创)】系列 的基础知识来实现爬虫,是不是很期待呀?那还等什么,跟着非安全哥哥脚步来,包你爽到
底。我们就此打住,下面我给大家讲下正则表达式中的字符边界匹配及匹配模式问题。
在字符边界里头匹配的不是字符而是位置哟(这点大家一定要记住 ^_^),是匹配符合某种条件的位置。在这里把涉及此
的一些特殊符号列举出来,如下
特殊字符 | 代表的含义 | ^ | 与字符串开始的地方匹配 | $ | 与字符串结束的地方匹配 | \b | 匹配一个单词的边界 |
说明:“ \b ”匹配这样一个位置,前面的字符和后面的字符不全是 “ \w ”。
各位不急,在这我先拿“ ^ ”这个来做测试,按照上方给的提示“与字符串开始的地方匹配”,测试如下
两者一对比,那么结果就显而易见了,但还是要说明下在这里的“ ^ ”和在中括号里的“ ^ ”,这两者是不同的,中括号
里的“ ^ ”代表取反的意思,在 00 讲已经测试过了,在这就不测试了,忘记的鱼油要再去看 00 讲哟 ^_^!!!假如文本
里最后一个是字符“ I ”,我其它“ I ”不要,我就要最后一个,那我们可以这么来写正则表达式“ I$ ”,测试如下
最后来说下最后一个特殊符号“ \b ”,匹配一个单词的边界,在表格的下面也对这个边界补充了下,“ \b ”匹配这样一
个位置,前面的字符和后面的字符不全是 “ \w ”,我们知道“ \w ”是匹配任意一个字母或数字或下划线,也就是
A~Z,a~z,0~9,_ 中任意一个,测试如下
因为最后 3 个 “ fishc ”字符串里的字符“ c ”可以用“ \w ”来表示以及紧跟它后面这个字符也可以用“ \w ”来表示,
所以它们被无情的抛弃了,只留下第一个字符串“ fihsc ”。
字符边界匹配问题就说到这,下面重点来了,说下正则表达式中的匹配模式问题。
正则表达式的匹配模式(3 种)问题:
1. 忽略大小写模式:匹配时忽略大小写,但在默认情况下,正则表达式是要区分大小写的。
2. 单行模式:整个文本看成一个字符串,只有一个开头和一个结尾,小数点匹配包括换行符在内的任意字符。
3. 多行模式:每行都是一个字符串,都有开头和结尾,在指定多行模式情况下,如果需要仅匹配字符串开始和
结束位置,可以用“ \A ”和“ \Z ”。
一些软件中我们可以设置这 3 种模式,以后用到的东西以后再学。
我们来看下第一个模式:忽略大小写模式,注意下图的操作
你只需要在 RegexBuddy 第二栏菜单按下“Case insensitive”就切换到了忽略大小写模式了。
第二个模式为单行模式,这个模式你就把整个文本当做是一个大字符串,这个大字符串又由许多小字符串组成。正则表达式
“ ^I ”就能体现这个单行模式。
第三个模式为多行模式,我们还是来看下操作图,注意
你只需要在 RegexBuddy 第二栏菜单按下“^$ match at line breaks”就切换到了多行模式了。
如果在多行模式下,你非得匹配第一个“ I ”,那么就需要这么做了,在前面加“ \A ”,如下
如果在多行模式下,你非得匹配最后一个“ I ”,那么就需要这么做了,在后面加“ \Z ”,如下
下一节将介绍正则表达式中的分支结构、捕获组、非捕获组与反向引用。
【Java正则表达式】03. 分支结构、捕获组、非捕获组与反向引用
|
|