正则表达式re模块
Posted 鸿飞冥冥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式re模块相关的知识,希望对你有一定的参考价值。
# 在线调试工具: tool.oschina.net/regex/# import re #w匹配字母数字下划线 W:非字母数字下划线 # print(re.findall(\'\\w\',\'as213df_*|d\')) #[\'a\', \'s\', \'2\', \'1\', \'3\', \'d\', \'f\', \'_\', \'d\'] # print(re.findall(\'\\W\',\'as213df_*|d\')) #[\'*\', \'|\'] # print(re.findall(\'a\\wb\',\'a_b a3b aEb a*b\')) #[\'a_b\', \'a3b\', \'aEb\'] #2、\\s匹配空字符, S匹配非空字符 # print(re.findall(\'\\s\',\'a b\\nc\\t\')) #[\' \', \'\\n\', \'\\t\'] # print(re.findall(\'\\S\',\'a b\\nc\\t\')) #[\'a\', \'b\', \'c\'] #3.\\d 匹配数字 \\D 匹配非数字 # print(re.findall(\'\\d\',\'a123bddfe4\')) #[\'1\', \'2\', \'3\', \'4\'] # print(re.findall(\'\\D\',\'a123bdd@fe4\')) #[\'a\', \'b\', \'d\', \'d\', \'@\', \'f\', \'e\'] #4、\\n匹配换行符 \\t 匹配制表符 # print(re.findall(\'\\n\',\'a12\\n3bd\\ndfe4\')) #[\'\\n\', \'\\n\'] # print(re.findall(\'\\t\',\'a12\\t3b\\tdd\\tfe4\')) #[\'\\t\', \'\\t\', \'\\t\'] #5、^ 只匹配字符串的开头是否以某某开头,如果是则匹配到,不是为空 # print(re.findall(\'h\',\'hello egon hao123\')) #[\'h\', \'h\'] # print(re.findall(\'^h\',\'hello egon hao123\')) #[\'h\'] #6、 str$ 是否以某某结尾,注意这里是放在要匹配的字符的右边,……是放在左边 # print(re.findall(\'3\',\'hello e3gon hao123\')) #[\'3\', \'3\'] # print(re.findall(\'3$\',\'3hello egon hao123\')) #[\'3\'] #7、 . 点 :匹配任意一个字符ac也不能匹配,\\n换行符也不能匹配,但是加上re.S就能匹配出换行符 # print(re.findall(\'a.c\',\'abc a1c a*c a|c abd aed ac a\\nc\')) #[\'abc\', \'a1c\', \'a*c\', \'a|c\'] # print(re.findall(\'a.c\',\'abc a1c a*c a|c abd aed ac a\\nc\',re.S)) #[\'abc\', \'a1c\', \'a*c\', \'a|c\', \'a\\nc\'] #8、[]匹配任意一个字符。相比点的是可以指定需要匹配哪个字符【12】就是匹配出1或者2的 #[1,2\\n] :就是匹配出1或者是逗号或者是2或者是换行符这四个字符 #【】可以匹配范围【0-9】:匹配从0到9 。-放到中间就是范围,放到其他地方就是符合 #[^0-9]:^放到【】里面代表是非的意思即只要不是0-9的都匹配出来,不是开头的意思 # print(re.findall(\'a[1,2]c\',\'a2c a1c a*c a|c a21c a2d ac a\\nc\')) #[\'a2c\', \'a1c\'] # print(re.findall(\'a[0-9]c\',\'a2c a1c a*c a|c a21c a2d ac a\\nc\')) #[\'a2c\', \'a1c\'] # print(re.findall(\'a[0-9a-zA-Z]c\',\'aHc a1c a*c a|c a21c a2d ac a\\nc\')) #[\'aHc\', \'a1c\'] #9、 *+?{n,m} 都是重复匹配的意思 # *代表左边的字符出现0次或无穷次 # print(re.findall(\'ab*\',\'acccc\')) #[\'a\'] # print(re.findall(\'ab*\',\'abbbb\')) #[\'abbbb\'] # + 代表左边字符出现一次或无穷次 # print(re.findall(\'ab+\',\'acccc\')) #[] # print(re.findall(\'ab+\',\'abbbb\')) #[\'abbbb\'] # print(re.findall(\'ab+[123]\',\'abbb1\')) #[\'abbb1\'] # {n,m} 匹配左边的字符出现n次到m次 # print(re.findall(\'ab{3}\',\'abb abbb abbbb\')) #[\'abbb\', \'abbb\'] # print(re.findall(\'ab{3,4}\',\'abb abbb abbbbb\')) #[\'abbb\', \'abbbb\'] # print(re.findall(\'ab{3,}\',\'abb abbb abbbbb\')) #i匹配3次到无穷次 # ? :?左边的字符匹配0次或1次 # print(re.findall(\'ab?c\',\'ac abc aec a1c\')) #[\'ac\', \'abc\'] #10、 .* 点* 贪婪匹配,匹配任意多个字符 # print(re.findall(\'a.*c\',\'ac abc adfdc\')) #只有一个结果 [\'ac abc adfdc\'] #11、 。*? 非贪婪匹配 :这里的?是转义的意思,转义为非贪婪匹配 # print(re.findall(\'a.*?c\',\'ac abc adfdc\')) #从左到右匹配到算是一次匹配成功[\'ac\', \'abc\', \'adfdc\'] #12、() 匹配括号里面的内容,表示分组 # print(re.findall(\'compan(y|ies)\',\'Too many companies have gone ban\')) #[\'ies\'] # print(re.findall(\'compan(?:y|ies)\',\'Too many companies have gone ban\')) #[\'companies\'] #这里的?:语法,转义匹配出company或者companies # ?:打印出真实的结果,不加则只打印出括号内的字符 # print(re.findall(\'ab+123\',\'ababab123\')) #[\'ab123\'] # print(re.findall(\'(ab)+123\',\'ababab123\')) #[\'ab\'] # print(re.findall(\'(?:ab)+123\',\'ababab123\')) #[\'ababab123\'] # print(re.findall(\'a\\\\c\',\'a\\c\')) #匹配不到 [] # print(re.findall(\'a\\\\\\\\c\',\'a\\c\')) #[\'a\\\\c\'] # ##r代表告诉解释器使用rawstring,即原生字符串,把我们正则内的所有符号都当普通字符处理,不要转义 # print(re.findall(r\'a\\c\',\'a\\c\')) #[] # print(re.findall(r\'a\\\\c\',\'a\\c\')) #[\'a\\\\c\']
参考博客:http://www.cnblogs.com/linhaifeng/articles/6384466.html
以上是关于正则表达式re模块的主要内容,如果未能解决你的问题,请参考以下文章