《精通正则表达式》读书笔记摘要: 第一章 入门(1)

几个概念及理解:

1、正则表达式是强大,便捷,高效的文本处理工具。
2、利用正则表达式能够添加、删除、分离、插入和修整各种类型的文本和数据。
3、要学会用正则表示达式来思考。
4、完整的正则表达式由两种字符构成:特殊字符(元字符),文字(普通文本字符)。
5、元字符的描述能力是正则表达式的核心。
6、元字符相当于人类语言的语法。

^(From|Subject): 其中 ^ , ( , | , ) 都是元字符。

正则表达式的思维框架

完整的正则表达式由小的的构建模块单元组成,每个单元都很简单,但他们能够以无穷多种组合。

1)行的起始和结束

^:行的开始
$:行的结束

他们匹配的是一个位置而不是具体的文本。

2)字符组

1、匹配若干字符之一:

正则表达式结构体:容许使用者列出在某处期望匹配的字符,通常被称作字符组。

[ea]:匹配e或者a

gr[ea]y:匹配时先找到g,接着是r,然后是一个a或者e,最后是一个y

重要:字符组的意思就是“”,在字符组内部“-”(连字符)表示一个范围

如:H[1-6]等同于H[123456]

[0-9a-fA-F] 等同于 [0123456789abcdefABCDEF] 也等同于 [A-Fa-f0-9] 也等同于 [a-f0-9A-F] 也等同于 [a-fA-F0-9],这叫多重组和。

[0-9A-Z_!.?] 匹配一个数字,大写字母,下划线,叹号,点号,问号

重要:只有在字符组内“-”(连字符)才是“元字符”,否则只能匹配普通的连字符,但并不意味着在字符组内一定就是元字符,如果出现在开头只表示普通连字符。问号(?)和点号(.)通常是元字符,但在字符组内他们都是普通字符了。

2、排除型字符组:

在字符组中出现^表示排除,列出的是不希望匹配的字符。
[^1-6] 匹配除1到6字外的任何字符,注意是任何字符!

重要:^在字符组外表是一个行的开始(锚点),在字符组内(且紧接在字符组的第一个方括号([) 之后)表示排除。

匹配未列出的字符 不等于 不要匹配列出的字符

3、用点号匹配任意字符:

元字符(.)是用来匹配任意字符的字符组的简便写法。
03[-./]19[-./]76 匹配:03/19/76 , 03-19-76 , 03.19.76 ,192033197639 ,但可能192033197639不是我们期望的结果,这是就要在对目标的了解程度和精准之间找一个平衡。

3)多选结构

1)匹配任意子表达式
关键要理解子表达式中的“子”,子表达式用“|”分割开,表示“或”,每个子表达式称作“多选分支”。
括号()对于子表达式是必须的,本身就是元字符。
格式:(子表达式1|子表达式2|子表达式3| ...)
例子:(First|1st)==(Fir|1)st
Jeffrey|Jeffery == Jeff(er|re)y == Jeff(ery|rey)

注意:多选结构与字符组是有根本的区别的,字符组只能由普通单字符构成分支,而多选结构的分支是可以由任何完整的表达式构成的,可以匹配任意长度的文本。

重要提示:在包含多选结构的表达式中使用^和$要格外小心,比较:
^From|Subject|Date: 和 ^(From|Subject|Date):
两者匹配的结果完全不同,前者会匹配:^From或者Subject或者Date:显然不是我们要的结果,所以有必要使用括号来进行限定。

(待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值