正则表达式简单用法


######################################################################
#re
######################################################################
text    #匹配普通文本
.       #匹配除换行符外的任一个字符
^       #匹配字符串的开始标志
$       #匹配字符串的末尾
*       #匹配前面表达式的0个或多个副本,匹配尽可能多的副本
+       #匹配前面表达式的1个或多个副本,匹配尽可能多的副本
?       #匹配前面表达式的0个或1个副本
{m}     #匹配前面表达式的m个副本
{m,n}   #匹配前面表达式的第m到n个副本,匹配尽可能多的副本。m,n默认值分别为0和无穷大
#############
例:
s = r"wxinbbbb2of
ew5inf!@#wo3 nie.xin]-^sienix"
print re.findall(r'i.b',s)
print re.findall(r'^w\w+',s)
print re.findall(r'x$',s)
print re.findall(r'inb?',s)
print re.findall(r'inb+',s)
print re.findall(r'inb*',s)
print re.findall(r'inb{,3}',s)
####result
['inb']
['wxinbbbb2of']
['x']
['inb', 'in', 'in']
['inbbbb']
['inbbbb', 'in', 'in']
['inbbb', 'in', 'in']
######################################################################
*?      #匹配前面表达式的0个或多个副本,匹配尽可能少的副本
+?      #匹配前面表达式的1个或多个副本,匹配尽可能少的副本
??      #匹配前面表达式的0个或1个副本,匹配尽可能少的副本
{m,n}?  #匹配前面表达式的第m到n个副本,匹配尽可能少的副本
#?表示非贪婪模式,匹配尽可能少
例:
s = r"wxinbbbb2of
ew5inf!@#wo3 nie.xin]-^sienix"
print re.findall(r'inb??',s)
print re.findall(r'inb+?',s)
print re.findall(r'inb*?',s)
print re.findall(r'inb{,3}?',s)
##########result
['in', 'in', 'in']
['inb']
['in', 'in', 'in']
['in', 'in', 'in']
#######################################################################
[...]   #匹配一组字符中的任意一个,所有特殊字符在字符集失去特殊含义。如要使用],-,^需使用转义字符\
        #或者把],-放在第一个字符,^放在非第一个字符
[^...]  #匹配集合中不包括的字符
A|B     #匹配A或B,A和B都是正则表达式
(...)   #匹配圆括号中的正则表达式,并且一个圆括号表示一个分组
#特殊字符
例:
s = r"wxinbbbb2of
ew5inf!@#wo3 nie.xin]-^sienix"
print re.findall(r'[a-z0-9]+',s)
print re.findall(r'[\]\-\^a-z0-9]+',s)
print re.findall(r'[^a-z0-9]+',s)
print re.findall(r'[a-z]+|[0-9]+',s)
print re.findall(r'(#[a-z0-9]+)',s)
#######result
['wxinbbbb2of', 'ew5inf', 'wo3', 'nie', 'xin', 'sienix']
['wxinbbbb2of', 'ew5inf', 'wo3', 'nie', 'xin]-^sienix']
[' ',
'!@#' , ' ', '.', ']-^']
['wxinbbbb', '2', 'of', 'ew', '5', 'inf', 'wo', '3', 'nie', 'xin', 'sienix']
['#wo3']
#######################################################################
(?aiLmsux) #设置正则表达式标志 i表示不区分大小写,s表示.可以匹配换行符
(?#...) #一个注释,圆括号中的内容将被忽略
(?=...) #只有在括号中的模式匹配时,才匹配前面的表达式
(?!...) #只有在括号中的模式不匹配时,才匹配前面的表达式
例:
s = r"wxinbbBbb
ew5inf!@wo3 nie.xin]-^sienix"
print re.findall(r'[a-z0-9]+',s)
print re.findall(r'(?i)[a-z0-9]+',s)
print re.findall(r'[a-z0-9]+(?=inbb)',s)
print re.findall(r'[o-z]+(?!inbb)',s)
#result
['wxinbb', 'bb', 'ew5inf', 'wo3', 'nie', 'xin', 'sienix']
['wxinbbBbb', 'ew5inf', 'wo3', 'nie', 'xin', 'sienix']
['wx']
['w', 'w', 'wo', 'x', 's', 'x']
#######################################################################
\number:    #匹配分组的序号
\b          #匹配单词开始或结尾处的空字符串
\B          #匹配不在单词开始或结尾处的空字符串
\d          #匹配十进制数字
\D          #匹配非数字
\s          #匹配空格字符 等价于r[\t\n\r\f\v]
\S          #匹配非空格字符
\w          #匹配字母数字字符
\W          #匹配非字母数字字符
例:
s = r"w2qn2qBbb
ew5in5if!@wo3 nie.xin]-^sienix"
print re.findall(r'(\d)([a-z])n\1\2',s)
print re.findall(r'\b[a-z]+',s)
print re.findall(r'\B[a-z]+',s)
print re.findall(r'\D[a-z]+',s)
print re.findall(r'\w[a-z]+',s)
print re.findall(r'\W[a-z]+',s)
#result
[('2', 'q'), ('5', 'i')]
['w', 'ew', 'wo', 'nie', 'xin', 'sienix']
['qn', 'q', 'bb', 'w', 'in', 'if', 'o', 'ie', 'in', 'ienix']
['qn', 'Bbb', ' ew', 'in', 'if',
'@wo' , ' nie', '.xin', '^sienix']
['2qn', '2q', 'Bbb', 'ew', '5in', '5if', 'wo', 'nie', 'xin', 'sienix']
[' ew',
'@wo' , ' nie', '.xin', '^sienix']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值