python-正则表达式

python-正则表达式

1.单字符匹配规则
  • .——表示除\n以外的任何一个字符

eg.

import re
re1=r'.'
res=re.findall(re1,'\new7789\n99dc&*')
print(res)

结果:

['e', 'w', '7', '7', '8', '9', '9', '9', 'd', 'c', '&', '*']
  • []——表示举例

eg.

import re
re2=r"[abc]"
res2=re.findall(re2,'323dsdsfa45bsdcc44')
print(res2)

结果:

['a', 'b', 'c', 'c']
  • \d——表示一个数字

eg.

import re
re3=r'\d'
res3=re.findall(re3,"dsad56gf89")
print(res3)

结果:

['5', '6', '8', '9']
  • \D——表示一个非数字

eg.

import re
re4=r'\D'
res4=re.findall(re4,"dsa@#d56g]:f89")
print(res4)

结果:

['d', 's', 'a', '@', '#', 'd', 'g', ']', ':', 'f']
  • \s——表示一个空白键(空格,Tab)

eg.

import re
re5=r"\s"
res5=re.findall(re5,"a s c  666")
print(res5)

结果:

[' ', ' ', ' ', ' ']
  • \S——表示一个非空白键

eg.

import re
re6=r"\S"
res6=re.findall(re6,"a s c  666")
print(res6)

结果:

['a', 's', 'c', '6', '6', '6']
  • \w——表示一个单词字符(数字,字母,下划线)

eg.

import re
re7=r"\w"
res7=re.findall(re7,"a b ...%$8%_DD_h")
print(res7)

结果:

['a', 'b', '8', '_', 'D', 'D', '_', 'h']
  • \W——表示一个非单词字符(数字,字母,下划线)

eg.

import re
re8=r"\W"
res8=re.findall(re8,"a b ...%$8%_DD_h")
print(res8)

结果:

[' ', ' ', '.', '.', '.', '%', '$', '%']
2.多个字符匹配规则
  • {m}——表示匹配一个字符m次

eg.

import re
re1=r"1[3456789]\d{9}"
res1=re.findall(re1,"ewe13456458906fg15834685478re14797678653")
print(res1)

结果:

['13456458906', '15834685478', '14797678653']
  • {m,}——表示匹配一个字符至少m次

eg.

import re
re2=r"\d{7,}"
res2=re.findall(re2,"qw123468gdg8585959cdcd58498489d4984")
print(res2)

结果:

['8585959', '58498489']
  • {m,n}——表示匹配一个字符至少m次到n次
    贪婪模式:如果指定一个范围,它会尽可能的去匹配更多的

eg.

import re
re3 = r"\d{3,5}"
res3 = re.findall(re3, "q11qw123qq468111gdg8585959cdcd5849848d4984")
print(res3)

结果:

['123', '46811', '85859', '58498', '4984']
  • {m,n}?表示匹配一个字符至少m次到n次
    ?表示关闭贪婪模式

eg.

import re
re4=r"\d{3,5}?"
res4=re.findall(re4,"q11qw123qq468111gdg8585959cdcd5849848d4984")
print(res4)

结果:

['123', '468', '111', '858', '595', '584', '984', '498']
  • *——表示前一个字符出现0次以上(包括0次)

eg.

import re
re5=r"\d*"
res5=re.findall(re5,"212fe18485df264s1s556")
print(res5)

结果:

['212', '', '', '18485', '', '', '264', '', '1', '', '556', '']
  • +——表示前一个字符出现1次以上(包括1次)

eg.

import re
re6=r"\d+"
res6=re.findall(re6,"212fe18485df264s1s556")
print(res6)

结果:

['212', '18485', '264', '1', '556']
3.边界匹配
  • ^——匹配字符串的开头

eg.

import re
re1=r"^python"
res1=re.findall(re1,"python999python")
print(res1)

结果:

['python']
  • $——匹配字符串的结尾

eg.

import re
re2=r"python$"
res2=re.findall(re2,"python999python")
print(res2)

结果:

['python']
  • \b——匹配单词的边界(单词和空格间的位置)

eg.

import re
re3 = r"\bpython"
res3 = re.findall(re3, "python999 python")
print(res3)

结果:

['python', 'python']
  • \B——匹配非单词的边界

eg.

import re
re4=r"\Bpython"
res4=re.findall(re4,"python999python")
print(res4)

结果:

['python']
  • ()——匹配分组:在匹配的数据中提取数据

eg1(一个分组)

import re
re5=r"aa(\d{3})bb"
res5=re.findall(re5,"ftf666776aa123bb787aa456bb")
print(res5)

结果:

['123', '456']

eg2(两个分组)

re6=r"aa(\d{2,})bb(\d{2,})cc"
res6=re.findall(re6,"ftf666776aa123bb787cc456bb")
print(res6)

结果:

[('123', '787')]

更多情况见:https://docs.python.org/zh-cn/3/library/re.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值