python之正则表达式
|
记号 |
说明 | 样例 |
| literal | 匹配字符串的值 | foo |
| re1|re2 | 匹配正则表达式re1 或 re2 | foo|bar |
| . | 匹配任意字符(除换行符) | b.b |
| ^ | 匹配字符串的开始 | ^Dear |
| $ | 匹配字符串的结尾 | /bin/*sh$ |
| * | 匹配前面出现的正则表达式零次或多次 | [A-Za-z0-9]* |
| + | 匹配前面出现的正则表达式一次或多次 | [a-z]+ |
| ? | 匹配前面出现的正则表达式零次或一次 | goo+ |
| {N} | 匹配前面出现的正则表达式N次 | [0-9]{3} |
| {M,N} | 匹配重复出现M到N次的正则表达式 | [0-9]{3,5} |
| [...] | 匹配字符组里任意一个字符 | [ahfj] |
| [..x-y..] | 匹配从x到y中的任意字符 | [0-9],[A-Za-z] |
| [^...] | 不匹配字符集中出现的任一字符 | [^A-Za-z] |
| (*|+|?|{})? | 用于非贪婪模式 | .*?[a-z] |
| (...) | 匹配括号中的正则表达式,并保存为子组 | ([0-9]{3})?,f(oo|u)bar |
| 记号 | 说明 | 样例 |
| \d | 匹配任何数字,和[0-9]一样 (\D是\d的反义:任何非数字符) | data\d+.txt |
| \w | 匹配任何数字字母字符,和[A-Za-z0-9]相同 (\W是\w的反义) | [A-Za-z]\w+ |
| \s | 匹配任何空白符,和[\n\t\r\v\f]相同,(\S是\s的反义) | of\sthe |
| \b | 匹配单词边界(\B是\b的反义) | \bThe\b |
| \nn | 匹配已保存的子组 | price:\16 |
| \c | 逐一匹配特殊字符c | \., \\, \* |
| \A(\Z) | 匹配字符串的开始(结尾) | \ADear |
| 函数/方法 | 描述 |
| compile(pattern, flags=0) | 对正则表达式模式pattern进行编译,flags可选参数 |
| match(pattern, string, flags=0) | 用pattern匹配字符串string开头,如成功则返回匹配对象,否则返回None |
| search(pattern, string, flags=0) | 在字符串string中搜索pattern的第一次出现,如成功则返回匹配对象,否则返回None |
| findall(pattern, string[,flags]) | 在字符串string中搜索pattern的所有出现,返回匹配对象的列表 |
| finditer(pattern, string[,flags]) | 和findall相同,但返回的是迭代器 |
| split(pattern, string, max=0) | 根据pattern把string分割为一个列表,并返回 |
| sub(pattern, repl, string, max=0) | 把string中匹配到的pattern换成repl |
| subn(pattern, repl, string, max=0) | 和sub相同,但并返回替换次数 |
| group(num=0) | 返回全部匹配对象(或第num个子组) |
| groups() | 返回一个包含全部匹配的子组的元组 |
正则表达式默认是贪心匹配的,如果正则表达式模式中使用到通配字,那它在按照从左到右的顺序求值时,会尽量“抓取”满足匹配的最长字符串。有时需要“抓取”最短字符串,因此就需要使用非贪心匹配。非贪婪操作符“?”,可以用在“*”,“+”,“?”的后面。
浙公网安备 33010602011771号