Python re 正则说明-栗子

这里写图片描述

1、w\ 与 W\

import re

#\w 匹配字母数字及下划线
print(re.findall('\w','hello alan _god !@^&#^$^!*&(*'))

#\W 匹配非字母数字下划线
print(re.findall('\W','hello alan _god !#@!#$(#*'))

输入结果

['h', 'e', 'l', 'l', 'o', 'a', 'l', 'a', 'n', '_', 'g', 'o', 'd']
[' ', ' ', ' ', '!', '#', '@', '!', '#', '$', '(', '#', '*']

2、\s与\S

print(re.findall('\s',"alan and god *& YUN CHINA"))

print(re.findall('\S',"alan and god *& YUN CHINA"))

输入结果

[' ', ' ', ' ', ' ', ' ']
['a', 'l', 'a', 'n', 'a', 'n', 'd', 'g', 'o', 'd', '*', '&', 'Y', 'U', 'N', 'C', 'H', 'I', 'N', 'A']

3、d\ 与 D\

print(re.findall('\d',"2018年9月8日16:54:30alan and god *& YUN CHINA1949"))

print(re.findall('\D',"20182018年9月8日16:54:20alan and god *& YUN CHINA1949"))

输入结果

['2', '0', '1', '8', '9', '8', '1', '6', '5', '4', '3', '0', '1', '9', '4', '9']
['年', '月', '日', ':', ':', 'a', 'l', 'a', 'n', ' ', 'a', 'n', 'd', ' ', 'g', 'o', 'd', ' ', '*', '&', ' ', 'Y', 'U', 'N', ' ', 'C', 'H', 'I', 'N', 'A']

4、\A 与 \Z

print(re.findall('\ACH',"CH2018年9月8日16:54:30alan and god *& YUN CHINA1949"))

print(re.findall('Z\Z',"20182018年9月8日16:54:20alan and god *& YUN CHINA1949ZZ"))

输出结果

['CH']
['Z']

5、^ 与 $

print(re.findall('^a',"alan and god *& YUN CHINA"))

print(re.findall('NA$','alan and god *& YUN CHINA'))

输出结果

['a']
['NA']

6、.

print(re.findall('an.','alan and god *& YUN CHINA'))

print(re.findall('a.a','alan and a&a ata'))

输出结果

['an ', 'and']
['ala', 'a&a', 'ata']

7、*

print(re.findall('an*','alan and god  anSB ang *& YUN CHINA'))

print(re.findall('an*','alan and a&a ata'))

输出结果

['a', 'an', 'an', 'an', 'an']
['a', 'an', 'an', 'a', 'a', 'a', 'a']

8、?

print(re.findall('ag?','age avg agre amg a'))

print(re.findall('agg?','aggge avgagg aggre amg ag'))

#匹配所有包含小数在内的数字
print(re.findall('\d+.?\d*','123adf 1.33663fsdf13fsdf1fsdf3'))

#.*默认为贪婪匹配
print(re.findall('a.*d','andgod930 axds9kidg'))

#.*?为非贪婪匹配
print(re.findall('a.*?d','andgod930 axds9kidg'))

输出结果

['ag', 'a', 'ag', 'a', 'a']
['agg', 'agg', 'agg', 'ag']
['123a', '1.33663', '13f', '1f', '3']
['andgod930 axds9kid']
['and', 'axd']

9、+

print(re.findall('and+','andgod930 axds9kidg an and anddd andddSSS'))

输出结果

['and', 'and', 'anddd', 'anddd']

10、{n,m}

print(re.findall('an{2}','andgod930 axds9kidg an annd anndd anddd andddSSS'))

print(re.findall('an{1,3}','andgod930 axds9kidg an annd anndd anddd andddSSS'))

print(re.findall('ab{1,}','abbb abs a ab bb'))

print(re.findall('ab{0,}','abbb abs a ab bb'))

输出结果

['ann', 'ann']
['an', 'an', 'ann', 'ann', 'an', 'an']
['abbb', 'ab', 'ab']
['abbb', 'ab', 'a', 'ab']

11、[]

#[]内的都为普通字符了,且如果-没有被转意的话,应该放到[]的开头或结尾
print(re.findall('a[1*-]b','a1b a*b a-b asb aab allb a--b'))

[]内的^代表的意思是取反
print(re.findall('a[^1*-]b','a1b a*b a-b a=b'))

[]内的0-9 之间匹配 0到9 之间的整数
print(re.findall('a[0-9]b','a1b a*b a-b a=b a0b a00b '))

[]内的a-z 之间匹配 大写字母
print(re.findall('a[a-z]b','a1b a*b a-b a=b aeb aAb abb acb azb'))

[]内的a-z 或者 A-Z 之间匹配 大写字母 与小写字母
print(re.findall('a[a-zA-Z]b','a1b a*b a-b a=b aeb aEb aab aAb aZb azb'))

输出结果

['a1b', 'a*b', 'a-b']
['a=b']
['a1b', 'a0b']
['aeb', 'abb', 'acb', 'azb']
['aeb', 'aEb', 'aab', 'aAb', 'aZb', 'azb']

12 、\ 与 \ 与 \\

#对于正则来说a\\c确实可以匹配到a\c,但是在python解释器读取a\\c时,会发生转义,然后交给re去执行,所以抛出异常
 print(re.findall('a\\c','a\c')) 
 #r代表告诉解释器使用rawstring,即原生字符串,把我们正则内的所有符号都当普通字符处理,不要转义
 print(re.findall(r'a\\c','a\c a\\c a c ac'))
 #和上面的结果一样
 print(re.findall('a\\\\c','a\c a\\c '))

输出结果

抛出异常
['a\\c', 'a\\c']
['a\\c', 'a\\c']

13、():分组

print(re.findall('ab+','ababab123 abc abd'))

#匹配到末尾的ab123中的ab
print(re.findall('(ab)+123','ababab123 abc123 abb123 aa1234 ab1234'))

#findall的结果不是匹配的全部内容,而是组内的内容,?:可以让结果为匹配的全部内容
print(re.findall('(?:ab)+123','ababab123 abc123 abb123 aa1234 ab1234'))

print(re.findall('href="(.*?)"','<a href="http://www.baidu.com">百度</a> <a href="http://www.google.com">go</a> <a href="http://www.yunhua.com">go</a>'))

print(re.findall('href="(?:.*?)"','<a href="http://www.baidu.com">百度</a> <a href="http://www.google.com">go</a> <a href="http://www.yunhua.com">go</a>'))

输出结果

['ab', 'ab', 'ab', 'ab', 'ab']
['ab', 'ab']
['ababab123', 'ab123']
['http://www.baidu.com', 'http://www.google.com', 'http://www.yunhua.com']
['href="http://www.baidu.com"', 'href="http://www.google.com"', 'href="http://www.yunhua.com"']
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值