正则表达式
regular expression(regex)
匹配纯文本 Ben Forta
匹配任何一个除了换行符以外的单个字符 .
匹配特殊字符 (元字符)
匹配元字符 \
匹配多个字符中的某一个 [ ]
元字符[和]来定义一个字符集合,它们本身不匹配任何字符;
在不需要区分大小写或者是只须匹配某个特定部分的搜索操作里比较常见;
字符集合区间-
A ~ Z / a ~ z / 0 ~ 9
字符区间的首、尾字符可以是ASCII字符表里的任意字符。但在实际工作中,最常用的字符区间还是数字字符区间和字母字符区间。
避免区间的尾字符小于它的首字符,这种区间没有意义,而且往往会让整个模式失效
- 是一个特殊的元字符,它只能用在[和]之间。在字符集合以外的地方,只是一个普通字符,只能与-本身相匹配。所以,在正则中,- 字符不需要转义。
同一个字符集合里可以给出多个字符区间。[A-Za-z0-9]
取非匹配 ^
字符集合通常用来指定一组必须匹配其中之一的字符。但在某些场合,我们需要反过来做。换句话说,除了那个字符集合里的字符,其他字符都可以匹配。
元字符^对一个字符集合进行取非匹配
^的效果将作用于给定字符集合里所有字符或者字符区间,而不是仅限于紧跟在^字符后面的那一个字符或者区间。
元字符大致可以分为两种:一种是用来匹配文本的(比如.),另一种是正则的语法所要求的的(比如[和])
匹配空白字符: 空格
f 换页符
换行符
回车符
水平制表符
v 垂直制表符
Windows中文本行结束标签 空行
Unix / Linux中文本行结束标签 空行
匹配特定的字符类:
匹配数字(与非数字):
d 匹配任何一个数字字符(等价于[0-9])
D 匹配任何一个非数字字符(等价于[^0-9])
(对同样的问题几乎总是有好几种不同的解决方法,这些方法并无优劣之分,你尽可以选择最熟悉的那种语法)
匹配字母和数字(与非字母和数字):
w 匹配任何一个字母(大小写均可)、数字、以及下划线字符
(等价于[a-zA-Z0-9_])
W 匹配任何一个非字母、数字、下划线字符
(等价于[^a-zA-Z0-9_])
匹配空白字符(与非空白字符):
s 匹配任何一个空白字符(等价于[f v])
S 匹配任何一个非空白字符(等价于[^f v])
匹配十六进制或八进制数值:
十六进制:前缀 x 后面跟2位16进制 x41
八进制:前缀