正则表达式
正则表达式是由一些字符和特殊符号组成的字符串,他们描述了模式的重复或表述多个字符,于是正则表达式能按照某种模式匹配一系列有相似特征的字符串。也即它们能匹配多个字符串。
常用特殊字符和符号
0.择一匹配 (|)
| 从多个模式中选择其一,类似于逻辑或,例如:
| 正则表达式 | 匹配的字符串 |
| apple|orange | apple,orange |
| cpp|java|python | cpp,java,python |
1.任意匹配单个字符 (.)
. 匹配除了换行符\n以外的任意字符,例如:
| 正则表达式 | 匹配的字符串 |
| a.c | a(任意字符)c |
| .. | 任意两个字符 |
2.从字符串开始或结尾或单词边界匹配(^) ($) (\b) (\B)
^或\A接字符串,表示以该字符串开始(区别:^匹配一行的开始,\A匹配输入的开始)
$或\Z接字符串,表示以该字符串结尾(同上)
\b接字符串,表示以该字符串开始(区别于^和\A:匹配一个单词起始部分,不管该单词前面是否有任何字符。通俗来说:^匹配字符串的开始,\b匹配单词的开始)
\B接字符串,表示以该字符串为子串但不是边界
| 正则表达式 | 匹配的字符串 |
| ^in | 任何以in开头的字符串 |
| com$ | 任何以com结尾的字符串 |
| the | 任何包含the的字符串 |
| \bthe | 任何以the开始的字符串 |
| \bthe\b | 单词zhe |
| \Bthe | 任何包含但不以the开始的字符串 |
| the\B | 任何包含但不以the结尾的字符串 |
3.创建字符集,类似于择一匹配 ([])
([])用于匹配某些特定字符,区别于(.)匹配任意字符,匹配方括号中包含的任意字符。
| 正则表达式 | 匹配的字符串 |
| c[abcd]d | cad,cbd,ccd,cdd |
| [cp][jv][py] | cjp,pjp,cvp,cvy,pjp,pjy |
4.限定范围或否定 (-) ([^])
方括号中两个字符以-符号连接表示指定一个范围,在连接的字符之中。
方括号中紧紧连接^符号表示不匹配给定字符集任一字符
| 正则表达式 | 匹配的字符串 |
| [a-c][d-f] | ad,ae,af,bd,be,bf,cd,ce,cf, |
| [^aeiou] | 一个非元音字符 |
| [^\t\n] | 不匹配制表符或换行符 |
5.零次,一次或多次匹配(*) (+) (?) ;频数匹配 {M} {M,N} {M,}
*将匹配其左边的正则表达式出现零次或多次的情况。
+将匹配其左边的正则表达式出现一次或多次的情况。
?将匹配其左边的正则表达式出现零次或一次的情况。
{M}将匹配其左边的正则表达式出现M次的情况。
{M,N}将匹配其左边的正则表达式出现M到N次的情况。
{M,}将匹配其左边的正则表达式出现M次或更多次的情况。
| 正则表达式 | 匹配的字符串 |
| dog? | dog,do |
| dog* | do,dog,dogg,doggg,....do任意个g |
| dog+ | dog,dogg,doggg,....dog任意个g |
| dog{5} | doggggg |
| dog{2,3} | dogg,doggg |
6.表示字符集的特殊字符 (\w)(\d) (\s)
\w 匹配任何字母数字下划线字符
\d 匹配任何十进制数字
\s 匹配任意空格字符
| 正则表达式 | 匹配的字符串 |
| \w+ | 一串由字母数字组成的字符串 |
| \d{3}-\d{3}-d{4} | 美国电话号码形式,如800-555-1212 |
| \w+@\w+\.com | xxx@yyy.com形式的电子邮件地址 |
| \s | 与[\n\r\t\v\f]相同,与\S相反 |
