《正则表达式必知必会》笔记
标签(空格分隔): 正则表达式 笔记 RE regular expression
说明:
1)《正则表达式必知必会》是本人见过的最好的一本讲解正则表达式的书籍,很适合初学者,书很薄,稍微有一点RE基础的人,1-2个小时可以翻一遍;
2) 本文是针对书的简略总结,方便自己查阅和对他人RE基础知识的检测。
3) 如果认为自己了解RE,可以直接下面内容进行检测或回顾,若内容看不懂,建议直接看原书了,真的很薄的,能最快入手!!!
元字符:在RE中有特殊含义的字符。
- 匹配文本,如
.
- 空白元字符,如
[\b] \f \n \r \t \v
等 –> 回车换行(\r\n
)
- 空白元字符,如
- 语法要求,如
[]
元字符大写和小写一般表示相反的匹配
- 匹配文本,如
在字符集合中,一般的,像
.
+
这样的元字符会被解释为普通字符,不需要被转义,但转义也可以。即[\w.]
等同于[\w\.]
。匹配的重复次数
*
,?
,+
–> 分别匹配字符(或字符集)零个一个或多个,零个或一个,一个或多个{1,8}
,{3,}
,{3}
过度匹配 (实际中注意使用”懒惰型”的)
贪婪型元字符 懒惰型元字符 *
*?
+
+?
{3,}
{3,}?
位置匹配
子表达式
将子表达是当作一个独立元素使用
|
RE里面的或操作符,如( ){2,
(19|20)\d{2}
注:
 
标识HTML文档中使用的非换行型空格,即non-breaking space可嵌套使用
回溯引用(backreference)
- 子表达可以在模式的内部被引用,即模式的后半部分可以引用前半部分定义的字表达式
查找连续重复出现的单词
[ ]+(\w+)[ ]+\1
注:回溯引用匹配通常是从1开始,
\0
表示匹配整个正则表达式;有的RE使用$
或者支持名字捕获(named capture)常用在替换操作中,或将文本分为多个子表,进行排版优化
用来进行大小写转换的元字符,如
\E
\l
\L
\u
\U
\l \u
只能把下一个字符或子表达是转换为小大写,\L \U
则和\E
一起使用,作用于中间的字符
前后查找
- lookahead & lookbehind, 即匹配但不cnsume
?=
或?<=
必须放在子表达式开头,其中向前查找的长度可变,向后查找只能是固定的模式 <– 几乎所有的RE都遵守这一规则- 前后查找操作符,
(?=)
(?!)
(?<=)
(?<!)
,其中!
标识负向查找 negative,如负向前查找。 - 前后查找结合起来,如
(?<=<[tT]>).*(?=\</[tT]>)
条件嵌入
- 并非所有RE实现都支持条件处理
用
?
匹配一个字符或表达式,如果它存在则执行后面的回溯引用条件,语法
(?(backreference)true-regex)
,在backreference存在时,true-regex才被执行注:
?(1)
是可以的,这里不用反义,但?(\1)
往往也是可以的。前后查找,只有在一个向前或向后查找取得成功的情况下才才允许一个表达式被使用。将回溯引用条件中的编号–>一个完整的前后查找表达式
如:
\d{5}(?(?=-)\d{4})
–>?(?=-)
仅起到一个判断的作用,不消费
常用软件