正则表达式用到的地方还是蛮多的,功能:比如:校验功能,账户 密码 电话 邮箱 ip地址,在目标字符串中匹配到自己想要的字符
以下先把正则笔记整理出来,再把例子分享给大家,希望对自己和大家都能起到一定的帮助
常用方法
search():匹配到就返回(匹配一次,只要有一个符合条件,就返回,后面有再多也不会返回,没匹配到返回None)
match():匹配到就返回,默认是在规则前加^(相当于以什么开头,匹配到:返回第一位,没匹配到:返回None)
findall():匹配多次(匹配到:把所有结果返回放到列表,没匹配到:返回空列表)
常用规则
\d:匹配一个数字
\w:匹配一个数字,字母,下划线
\s:匹配空格
\D:匹配非 \d (除了数字,其他都能匹配到)
\W:匹配非 \w(除了数字,字母,下划线,其他都可以匹配到)
\S:匹配非\s(除了空格,其他均能匹配到)
. :匹配任意字符,但不能匹配换行,(re.S匹配换行)
- : 匹配0 - N个*前边的字符
- :匹配 1 - N 个+号前边的字符
?:匹配 0 - 1个?前边的字符
.*? :匹配一次(非贪婪模式)
.* :匹配多次(贪婪模式)
[]:所有字符都是原字符(无特殊含义)[.]搜索的就是.
[^]:非【】(除了【】中给定的范围不能匹配,其他都可以匹配)
{n}:重复N次
{m,n}:重复m到n次(尽可能多的匹配m,n位)
():分组
^:必须以规则开头
$:必须以规则结尾
以下是运用实例:
1.常用方法的举例
import re
# 字符串
s = r'31124pyt\\honpy.org0'
c = r'rw'
# 匹配的规则
pattern = re.compile('\d')
# search:从左向右依次匹配,匹配到就返回,规则是匹配数字
# result = pattern.search(s) # 返回<_sre.SRE_Match object; span=(2, 3), match='3'>
# result = pattern.search(c) # 返回None
# findall:从左向右依次匹配,把所有匹配到的都放到列表中
# result = pattern.findall(s) #返回:['3', '1', '1', '2', '4', '0']
# result = pattern.findall(c) #返回[]
# match:默认的^开头,(就是看第一位是否符合匹配,匹配就返回,否则None)
# result = pattern.match(s)#返回<_sre.SRE_Match object; span=(0, 1), match='3'>
result = pattern.match(c)#返回None
print(result)
编译的规则及运行结果放到后面注释了,希望便于理解
import re
# 字符串
s = r'112347598374958734pyt:honpy.org0'
# 编译一个规则
# pattern = re.compile('\w\d') # <_sre.SRE_Match object; span=(0, 2), match='11'>
# pattern = re.compile('\W\D') # <_sre.SRE_Match object; span=(21, 23), match='\\\\'>
# pattern = re.compile(r'\\+') # <_sre.SRE_Match object; span=(21, 23), match='\\\\'>
# pattern = re.compile('\.\.\.') # None
pattern = re.compile('ww\d*pyt')#None
# pattern = re.compile('[a-zA-Z\d]+')#<_sre.SRE_Match object; span=(0, 21), match='112347598374958734pyt'>
# pattern = re.compile('[^a-zA-Z\d]+')#<_sre.SRE_Match object; span=(21, 22), match=':'>
# pattern = re.compile(r'\d{3,8}')#<_sre.SRE_Match object; span=(0, 8), match='11234759'>
# pattern = re.compile(r'(\d+)(.*)org')#<_sre.SRE_Match object; span=(0, 31), match='112347598374958734pyt:honpy.org'>
result = pattern.search(s)
print(result)
注意:写规则的时候,前边尽量加r
我一直想把自己所学到所遇到的尽量用更能理解的方式整理出来,在此期间也会不断更新完善,欢迎大家一起来补充,提出宝贵意见