自己学习,只记些其中的要点。
- .匹配任意单个字符,但不匹配换行符
- 在方括号中使用连字符来指定字符集的范围. 在方括号中的字符集不关心顺序. 例如,表达式[Tt]he 匹配 the 和 The.
- 方括号的句号就表示句号. 表达式 ar[.] 匹配 ar.字符串
- 一般来说 ^ 表示一个字符串的开头,但它用在一个方括号的开头的时候,它表示这个字符集是否定的. 例如,表达式[/^c]ar(没有/) 匹配一个后面跟着ar的除了c的任意字符.
- 号匹配 在之前的字符出现大于等于0次
- 字符和.字符搭配可以匹配所有的字符.. 和表示匹配空格的符号s连起来用,如表达式scats*匹配0或更多个空格开头和0或更多个空格结尾的cat字符串.
- +号匹配+号之前的字符出现 >=1 次. 例如表达式c.+t 匹配以首字母c开头以t结尾,中间跟着任意个字符的字符串. "c.+t" => The fat cat sat on the mat.
- 在正则表达式中元字符 ? 标记在符号前面的字符为可选,即出现 0 或 1 次. 例如,表达式 [T]?he 匹配字符串 he 和 The. "[T]?he" => The car is parked in the garage.
- 在正则表达式中 {} 是一个量词,常用来一个或一组字符可以重复出现的次数. 例如,表达式 [0-9]{2,3} 匹配最少 2 位最多 3 位 0~9 的数字.
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0. - 我们可以省略第二个参数. 例如,[0-9]{2,} 匹配至少两位 0~9 的数字.
"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0. - 如果逗号也省略掉则表示重复固定的次数. 例如,[0-9]{3} 匹配3位数字
"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0. - (...) 特征标群
表达式 (ab)* 匹配连续出现 0 或更多个 ab. (c|g|p)ar 匹配 car 或 gar 或 par. - | 或运算符
(T|t)he|car 匹配 (T|t)he 或 car - 转码特殊字符
反斜线 在表达式中用于转码紧跟其后的字符. 用于指定 { } [ ] / + * . $ ^ | ? 这些特殊字符. 如果想要匹配这些特殊字符则要在其前面加上反斜线 .
"(f|c|m)at.?" => The fat cat sat on the mat. - 锚点. ^ 指定开头,$ 指定结尾.
- ^ 号
^ 用来检查匹配的字符串是否在所匹配字符串的开头. - $ 号
$ 号用来匹配字符是否是最后一个.
"(at.)$" => The fat cat. sat. on the mat.
18.简写字符集
. 除换行符外的所有字符 \w 匹配所有字母数字,等同于 [a-zA-Z0-9_] \W 匹配所有非字母数字,即符号,等同于: **\[^\w]** \d 匹配数字: [0-9] \D 匹配非数字: \[^\d] \s 匹配所有空格字符,等同于: [\\t\\n\\f\\r\\p{Z}] \S 匹配所有非空格字符: \[^\s] \f 匹配一个换页符 \n 匹配一个换行符 \r 匹配一个回车符 \t 匹配一个制表符 \v 匹配一个垂直制表符 \p 匹配 CR/LF (等同于 \r\n),用来匹配 DOS 行终止符
19.前后关联约束(前后预查)
?= 前置约束-存在 ?! 前置约束-排除 ?<= 后置约束-存在 ?<! 后置约束-排除
20.?=... 前置约束(存在)
表达式 (T|t)he(?=\sfat) 匹配 The 和 the,在括号中我们又定义了前置约束(存在) (?=\sfat),即 The 和 the 后面紧跟着 (空格)fat.
"(T|t)he(?=sfat)" => The fat cat sat on the mat.
21.?!... 前置约束-排除
表达式 (T|t)he(?!\sfat) 匹配 The 和 the,且其后不跟着 (空格)fat.
"(T|t)he(?!sfat)" => The fat cat sat on the mat.
22.?<= ... 后置约束-存在
例如,表达式 (?<=(T|t)he\s)(fat|mat) 匹配 fat 和 mat,且其前跟着 The 或 the.
"(?<=(T|t)hes)(fat|mat)" => The fat cat sat on the mat.
23.?<!... 后置约束-排除
例如,表达式 (?<!(T|t)he\s)(cat) 匹配 cat,且其前不跟着 The 或 the.
"(?<!(T|t)hes)(cat)" => The cat sat on cat.
24.标志也叫修饰语,因为它可以用来修改表达式的搜索结果. 这些标志可以任意的组合使用,它也是整个正则表达式的一部分.
i 忽略大小写. g 全局搜索. m 多行的: 锚点元字符 ^ $ 工作范围在每行的起始.
25.修饰语 i 用于忽略大小写. 例如,表达式 /The/gi 表示在全局搜索 The,在后面的 i 将其条件修改为忽略大小写,则变成搜索 the 和 The,g 表示全局搜索.
"/The/gi" => The fat cat sat on the mat.
26.修饰符 g 常用语执行一个全局搜索匹配,即(不仅仅返回第一个匹配的,而是返回全部). 例如,表达式 /.(at)/g 表示搜索 任意字符(除了换行) + at,并返回全部结果.
27.多行修饰符 m 常用语执行一个多行匹配.例如,表达式 /at(.)?$/gm 表示在待检测字符串每行的末尾搜索 at后跟一个或多个 . 的字符串,并返回全部结果.