前端开发博客

这里会共享一些前端方面的咨询、技术以及自己写的一些代码,主要是记录自己的学习过程的一个博客。

当前位置:首页 > javascript

《正则表达式必知必会》读书笔记

时间:2013-09-04 12:33:57  来源:  作者:
Author:chemandy

---------------------------------------------------------------------------------------

第一章 正则表达式干啥用
1.正则表达式用途:①搜索②替换。
  定义:正则表达式是用正则表达式语言创建的。用于解决文本匹配替换问题。

---------------------------------------------------------------------------------------

第二章 匹配单个字符
1.纯文本正则表达式匹配原始文本内对应字符。
2.正则表达式区分大小写。
3.正则表达式中 . 字符可以匹配任何一个单个的字符。可匹配任何单个的字符、字母、数字甚至是 . 字符本身。(除换行符外)
4.是一个元字符(metacharacter,表示这个字符有特殊含义,而不是字符本身含义)。

---------------------------------------------------------------------------------------

第三章 匹配一组字符
1.元字符[和],两个字符之间所有字符进行匹配。
2.字符区间可以用元字符-(连字符)来定义。如0-9,a-z。她只用于[和]之间,其他地方作普通字符,不用转义。
3.元字符^表明你想对一个字符集合区非匹配。只用于集合[^]中。

---------------------------------------------------------------------------------------

第四章 使用元字符
1.元字符用于对其他字符进行转义。
2.元字符,有两种:①用来匹配文本②语法要求
3.①[b]回退并删除一个字符②f换页符③n换行符④r回车符⑤t制表符⑥v垂直制表符
4.Windows使用rn文本行结束标签。Unix和Linux只用一个n。
5.元字符d等价[0-9];元字符D等价[^0-9]
6.元字符w等价[a-zA-Z0-9];W等价[^a-zA-Z0-9]
7.元字符s等价[fnrtv];S等价[^fnrtv]
8.十六进制x ,八进制
9.POSIX字符类:
①[:alnum:]等价[a-zA-Z0-9]
[:alpha:]等价[a-zA-Z]
[:blank:]等价[t ]
④[:cntrl:]等价ASCII控制字符,即0-31,127
[:digit:]等价[0-9]
[:graph:]等价[:print:]-空格
[:lower:]等价[a-z]
[:print:]等价任一可打印字符
[:punct:]等价不是①④的
[:space:]等价[^fnrtv]
[:upper:]等价[A-Z]
[:xdigit:]等价[a-fA-F0-9]

---------------------------------------------------------------------------------------

 

第五章 重复匹配
1.元字符+ ,用于字符和集合之后,匹配一个或多个字符(至少一个;不匹配零个字符的情况)。匹配+本身,用+
2.当在字符集合里,像.和+这样的元字符将被解释为普通字符,不需要转义。
3.*与+用法相同,*匹配字符或集合连续出现零次或多次的情况。
4.元字符? ,只能匹配一个字符(或集合)的零次或一次出现。
5.元字符{}作用:
①可设置重复匹配次数,如{5},则需要连续5次。
②可设置重复匹配区间{2,4},2-4次
③可设置至少匹配次数{3,},3次以上
6.*和+都是“贪婪型”元字符,琪匹配行为多多益善。此时,可使用?后缀将其转化为“懒惰型”版本。如“贪婪型”:*  +  {n,} ,“懒惰型”:*?  +?  {n,}?


---------------------------------------------------------------------------------------

 

第六章 位置匹配
1.限定符b指定单词边界,用于匹配一个单词的开始/结尾。
2.定义字符串边界字符:①^定义字符串开头②$定义字符串结尾。
3.分行匹配模式(multiline mode)记号(?m),使得正则表达式引擎把行分隔符当做一个字符串分隔符来对待。
在分行匹配模式下,^不仅匹配正常的字符串开头,还匹配行分隔符(换行符)后面开始的位置;$同理。
4.很多证则表达式实现不支持(?m)
5.A和B作用基本等价^和$,但A和B不受分行匹配模式影响。


---------------------------------------------------------------------------------------

 

第七章 使用字表达式
1.字表达式是一个更大的表达式的一部分;把一个表达式划分一系列字表达式的目的是为了把那些字表达式当做一个独立元素来使用。
2.字表达式必须用两个元字符和(和)括起来。
3.|字符是正则表达式的或操作符,左右两边分别作以整体看待。
4.字表达式允许嵌套(包括多层嵌套)
○匹配结果符合预期的正则表达式容易,排除不匹配结果的难。


---------------------------------------------------------------------------------------

 

第八章 回溯引用:前后一致匹配
1.回溯引用指的是模式的后半部分引用在前半部分中定义的字表达式。使用123代表回溯引用第123个表达式(不同环境符号可能不同)。C#中match.Groups[1]对应着第一个匹配。
2.回溯引用只能用来引用模式里的字表达式。
3.回溯引用匹配通常从1开始计数,第0个匹配代表整个正则表达式。
4.正则表达式梗适合用于复杂的替换,尤其是需要使用回溯引用的场合。
5.大小写转换元字符: E(结束L或U转换)
l(把下一字符转小写)  L(把L到E间转小写)
u(把下一字符转大写)  U(把U到E间转大写)


---------------------------------------------------------------------------------------

 

第九章 前后查找
1.前后查找(lookaround),对某一位置的前后内容进行查找。其中的前后指模式与被查找文本的相对位置而言,左为前。
2.向前查找制定了一个必须匹配但不在结果中返回的模式。使用方式(?=),向前(左)匹配,返回匹配值不含=后内容。
3.向后查找操作符?<=
4.向前查找和向后查找通常用来匹配文本,其目的是为了确定将被返回为匹配结果的文本位置(通过指定匹配结果的前后必须是那些文本)。称“正向前查找”和“正向后查找”。
5.负前后查找:①负向前查找:向前查找不予给定模式匹配的文本,②负向后查找:向后查找不予给定模式匹配文本。
6.(?=)正向前查找;(?<=)正向后查找;(?!)负向前查找;(?<!)负向后查找;


---------------------------------------------------------------------------------------

 

第十章 嵌入条件
1.正则表达式里条件用?来定义。
  嵌入条件不外乎两种情况:①根据一个回溯引用来进行条件处理②根据一个前后查找来进行条件处理。
2.回溯引用条件定义语法?(backerference)tr-regex|false-regex
3.前后查找条件定义语法,与回溯基本一致(很少使用,有更简单方法)