1)正则匹配
. | 匹配任意除换行符"\n"的字符 | a.c | abc |
\ | 转义字符,能使特殊字符保持原来意思 | a\.c a\\c | a.c a\c |
\d | 数字:[0-9] | a\dc | a1c |
\s | 空白字符 | a\sc | a c |
\w | 单词字符 | a\wc | abc |
* | 匹配前一个字符0或无限次 | abc* | ab abccc |
+ | 匹配前一个字符1次或无限次 | abc+ | abc abccc |
? | 匹配前一个字符0次或1次 | abc? | ab abc |
{m} | 匹配前一个字符m次 | ab{2}c | abbc |
{m,n} | 匹配前一个字符m至n次 | ab{1,2}c | abc abbc |
*? +? ?? {m,n}? | 使* + ? {m,n}变为非贪婪模式 |
2)数量词的贪婪模式和非贪婪模式
python里的数量词默认是贪婪的,总是尝试匹配尽可能多的字符. 例如:正则匹配"ab*"如果用于查找"abbbc",将找到"abbb";如果使用非贪婪的数量词"ab*?",将找到"a"
3)实例
>>>s='(abc)def' >>>m=re.search("(\(.*\)).*",s) >>>m.group(1) abc 解析:1)对括号进行转义;2)分组匹配.group(0)匹配整个字符串,group(1)匹配第一个分组 --------------------------------------------------------------------------------------------------------------------------- >>>a="kdlal123dk345" >>>m=re.search("([0-9]+(dk){0,1})[0-9]+",a) >>>m.group(1),m.group(2) ('123dk','dk') --------------------------------------------------------------------------------------------------------------------------- s1='adkkdk' an=re.search('^[a-z]+$',s1) **(此处还可以写re.match('[a-z]+$',s1);match默认会从开头开始匹配x** ifan: printan.group() else: print"不全是小写." 解析:判断字符串是否全部为小写. ----------------------------------------------------------------------------------------------------------------------------原文链接:https://www.f2er.com/regex/357776.html