鱼C论坛

 找回密码
 立即注册
查看: 5357|回复: 3

[技术交流] 【Java正则表达式】02. 探讨字符边界匹配及匹配模式问题

[复制链接]
发表于 2017-2-9 15:11:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 零度非安全 于 2017-4-11 12:12 编辑

上一讲,我们谈了 Java 正则表达式中的量词、贪婪模式(默认)以及非贪婪模式,你只要把它想象成一条贪吃蛇,

给定范围,有多少它就吃多少,如果忘了可以点上一讲再看一遍消化下,把它转化为自己的东西,学习是自己的事,得一步

一个脚印来,只要把基础打扎实了,那到后面做小项目的时候就轻松了,比如最后我要讲爬虫,但要把正则学完,并且配合

【Java 教程(原创)】系列 的基础知识来实现爬虫,是不是很期待呀?那还等什么,跟着非安全哥哥脚步来,包你爽到

底。我们就此打住,下面我给大家讲下正则表达式中的字符边界匹配及匹配模式问题。

在字符边界里头匹配的不是字符而是位置哟(这点大家一定要记住 ^_^),是匹配符合某种条件的位置。在这里把涉及此

的一些特殊符号列举出来,如下

特殊字符
代表的含义
^
与字符串开始的地方匹配
$
与字符串结束的地方匹配
\b
匹配一个单词的边界

说明:“ \b ”匹配这样一个位置,前面的字符和后面的字符不全是 “ \w ”。

各位不急,在这我先拿“ ^ ”这个来做测试,按照上方给的提示“与字符串开始的地方匹配”,测试如下

0.png 1.png

两者一对比,那么结果就显而易见了,但还是要说明下在这里的“ ^ ”和在中括号里的“ ^ ”,这两者是不同的,中括号

里的“ ^ ”代表取反的意思,在 00 讲已经测试过了,在这就不测试了,忘记的鱼油要再去看 00 讲哟 ^_^!!!假如文本

里最后一个是字符“ I ”,我其它“ I ”不要,我就要最后一个,那我们可以这么来写正则表达式“ I$ ”,测试如下

2.png 3.png

最后来说下最后一个特殊符号“ \b ”,匹配一个单词的边界,在表格的下面也对这个边界补充了下,“ \b ”匹配这样一

个位置,前面的字符和后面的字符不全是 “ \w ”,我们知道“ \w ”是匹配任意一个字母或数字或下划线,也就是

A~Z,a~z,0~9,_ 中任意一个,测试如下

4.png 5.png

因为最后 3 个 “ fishc ”字符串里的字符“ c ”可以用“ \w ”来表示以及紧跟它后面这个字符也可以用“ \w ”来表示,

所以它们被无情的抛弃了,只留下第一个字符串“ fihsc ”。

字符边界匹配问题就说到这,下面重点来了,说下正则表达式中的匹配模式问题。

正则表达式的匹配模式(3 种)问题:

1. 忽略大小写模式:匹配时忽略大小写,但在默认情况下,正则表达式是要区分大小写的。

2. 单行模式:整个文本看成一个字符串,只有一个开头和一个结尾,小数点匹配包括换行符在内的任意字符。

3. 多行模式:每行都是一个字符串,都有开头和结尾,在指定多行模式情况下,如果需要仅匹配字符串开始和

结束位置,可以用“ \A ”和“ \Z ”。

一些软件中我们可以设置这 3 种模式,以后用到的东西以后再学。

我们来看下第一个模式:忽略大小写模式,注意下图的操作

0.gif

你只需要在 RegexBuddy 第二栏菜单按下“Case insensitive”就切换到了忽略大小写模式了。

第二个模式为单行模式,这个模式你就把整个文本当做是一个大字符串,这个大字符串又由许多小字符串组成。正则表达式

“ ^I ”就能体现这个单行模式。

第三个模式为多行模式,我们还是来看下操作图,注意

1.gif

你只需要在 RegexBuddy 第二栏菜单按下“^$ match at line breaks”就切换到了多行模式了。

如果在多行模式下,你非得匹配第一个“ I ”,那么就需要这么做了,在前面加“ \A ”,如下

2.gif

如果在多行模式下,你非得匹配最后一个“ I ”,那么就需要这么做了,在后面加“ \Z ”,如下

3.gif

下一节将介绍正则表达式中的分支结构、捕获组、非捕获组与反向引用。

【Java正则表达式】03. 分支结构、捕获组、非捕获组与反向引用

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-16 15:51:59 | 显示全部楼层
楼主总结的非常棒,大赞,会一直支持

评分

参与人数 1鱼币 +4 收起 理由
零度非安全 + 4 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-16 16:02:25 | 显示全部楼层
sunnychou 发表于 2017-3-16 15:51
楼主总结的非常棒,大赞,会一直支持

蟹蟹 sunnychou 这位童鞋的滋瓷!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-17 10:21:38 | 显示全部楼层
零度非安全 发表于 2017-3-16 16:02
蟹蟹 sunnychou 这位童鞋的滋瓷!!!

蟹蟹你才对,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 18:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表