特殊字符
- ^ . $ * ? + {} {2,} {2,5} |
- [] [^] [a-z]
- \s \S \w \W
- [\u4E00-\u9FA5] () \d
字符说明
| 符号 | 描述 |
|---|---|
. | 匹配任何字符(除了换行符)如^a.以a开头,后面跟任意字符 |
* | 匹配前面的元素零次或多次 |
+ | 匹配前面的元素一次或多次 |
? | 匹配前面的元素零次或一次 |
{2} | 匹配前面的元素出现了2次,固定的次数 |
{2,} | 匹配前面的元素出现次数至少2 |
{2,5} | 匹配前面的元素出现次数至少2次最多5次 |
() | 提取()中的子串 |
| | 匹配两个或多个字符,表示或的关系,如 a|b 匹配 “a” 或 “b” |
[0-9] | 两端字符的区间,如[0-9]|[a-z] 0到9之间任意数字或者a到z之间的某个字符 |
[abc] | 匹配一个字符,可以是 “a”、”b” 或 “c” 中任意一个 |
[^abc] | 匹配一个字符,不可以是 “a”、”b” 或 “c” 中的任何一个 |
^ | 匹配开头, 如^a 表示以'a'字符开头 |
$ | 匹配结尾, 如a$ 表示以a结尾的字符串 |
\d | 单个数字, [0-9] |
\D | 除了[0-9] |
\w | 包括下划线在内的单个字符,[A-Za-z0-9_] |
\W | 非单字字符 |
\s | 单个数字, [0-9] |
\S | 匹配非空白字符 |
- 注意:
//1、 ? 表示非贪婪匹配模式,从字符串的正向开始匹配 需要以非贪婪模式匹配某个字符,就在某个字符前面加上? line = ".sdfdaddddcdddddckldjf" regexstr = '.*(d.*d).*' //以上语句已经匹配出 dckld 这段字符串 //将匹配规则改为以下语句,才能匹配出 dfd 字符串 regexstr = '.*?(d.*?d).*' //2、{} //以贪婪的模式匹配,d与d之间有一个字符 line = ".sdfdaddddcdddddckdldjf" regexstr = '.*(d.{1}d).*'// 输出 dld 字符串 //3、 | line = ".上岛咖啡就;lkjjkksdff" regexstr = ".*?(上岛咖|lkj)" //输出:上岛咖 //-------------------------------- line = "boobby123" regexstr = "((bobby|boobby)123)" match = re.match(regexstr, line) //match.group(1): 输出 boobby123 //match.group(2): 输出 boobby