正则表达式:
元字符 (metacharacter)
. (英文的句号) 匹配除了换行符以外的任意字符
限定符 主要处理匹配次数,其中 * + ?为贪婪匹配 (意思为在符合匹配条件的时候尽可能多的匹配,可以使用?来取消贪婪,费贪婪模式匹配尽可能少)
* 匹配前面的子表达式零次或多次。等价于 {0,}
+ 匹配重复1次或更多次。等价于{1,} 如:\d+匹配1个或更多连续的数字
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
{n} n 是一个非负整数。匹配确定的 n 次。
{n,} n 是一个非负整数。至少匹配n 次。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
字符类匹配
\d 匹配一位数字 0\d\d-\d\d\d\d\d\d\d\d 零开头的三位区号的电话号码 或 0\d{2}-\d{8} 表示必须连续重复匹配2(8)次。
\D 匹配一个非数字字符。等价于 [^0-9]。
\w 匹配字母或数字或下划线或汉字等。
定位符 描述字符串、单词的边界。
^ 匹配字符串的开始,除非在方括号表达式中使用,此时它表示不接受该字符集合。
$ 匹配字符串的结束
^和$的作用如下:如果不使用^和$的话,对于\d{5,12}而言,使用这样的方法就只能保证字符串里包含5到12连续位数字,而不是整个字符串就是5到12位数字。
如 没有^$则 abc12345abc defff1234567ddd 都可以进行匹配。如果加上则只能匹配 12345 123456789 这些纯数字。
\b 代表单词的单词的开头或结尾,也就是单词的分界处。但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。 \bhi\b 匹配hi
\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
小括号 (pattern) 一般与 | 搭配使用
() 匹配 pattern 并获取这一匹配。可以缓存
(?:) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式
(?=) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。
(?!) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。
中括号 []
[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 负值字符集合。匹配未包含的任意字符。
[a-z] 字符范围。匹配指定范围内的任意字符。 匹配a到z任意一个小写字符
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。
特殊字符
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。
x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
正则表达式笔记
猜你喜欢
转载自lovekaiyuan.iteye.com/blog/2197791
今日推荐
周排行