正则表达式的笔记
一、正则表达式基本要素
1、字符类
. 匹配任意一个字符,如:succ.ss可以匹配到success(匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。)
[] 匹配[]内任意一个字符,如:98fe[abcd]bd1可以匹配到98feabd1、98febbd1、98fecbd1、98fedbd1
^ []里,以^开头的,匹配除括号内字符的其他字符,如:rt[^nmkk]Code可以匹配到rtaCode、rtbCode,反正就是第3个字符不能为nmkk中的任何一个
- 表示一个[]里的某个范围,如:小写26个字母[a-z]、个位数字[0-9]
2、数量限定符
? 它前面的字符应该匹配0次或一次,如:s? 可以匹配到一个s或0个s
+ 它前面的字符应匹配一次或多次,如:s+ 可以匹配到一个s或多个s
* 它前面的字符应匹配0次或多次,如:s*可以匹配到0个或多个s
{n} 它前面的字符应匹配n次,如:s{4}精确匹配4个s ;[2-8][0-9]{4}精确匹配一个五位数,万位是2-8的数字
{n,} 它前面的字符至少匹配n次,如:[1-9][0-9]{3,}匹配到的数字至少是4位数的,可以大于4位数
{n,m} 它前面的字符至少匹配n次,最多m次,如:[0-9]{1,3}\.[0-9]
{1,3}\.[0-9]{1,3}\.[0-9]{1,3}匹配一个IP地址(\代表的是转义符)
3、位置限定符
^ 匹配文本里某一行的行首位置,如:^auto 匹配文本内的以auto开头的行首
$ 匹配文本里某一行末尾的位置,如:true$ 匹配到以true结尾的行尾
\< 匹配文本里某个以so开头的单词,如:\<so 匹配到sorry,匹配不到suso
\> 匹配文本里某个以ss结尾的单词,如:ss\> 匹配到success,匹配不到ssus
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。,\b[a-zA-Z]{4}\b匹配文本里的四个字母的单词
\B 匹配非单词边界。如:'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
4、特殊符号
\ 转义符,普通字符转义为特殊字符,特殊字符转义为普通字符。普通字符 < . \ 需要转义,写成 \< \. \\
() 将表达式的一部分括起来,组成一个单元,对整个单元使用数量限定符,如:匹配IP地址 ([0-9]{3}\.){3}[0-9]{1,3}
| 连接两个子表达式,表示或的意思,如:brand(Detail|sorry)匹配brandDetail或者brandsorry(注:| 两边不要有空格)
\d 匹配所有数字字符,相当于[0-9]
\D 匹配非数字字符,相当于[^0-9]
\w 匹配数字字母下划线,相当于[a-zA-Z0-9]
\W 匹配非数字字母下划线,相当于[^a-zA-Z0-9]、[^\w]
\s 匹配任意空白字符,等价于 [\t\n\r\f]。[\r\t\n\f](\r代表回车,\t水平制表,\n换行,\f换页)
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。(不包括空格)
5、在匹配出来的文件中批量添加特定字符:($0)代表匹配的内容