正则表达式

import re
str = 'java|php|c++|python'
r = re.findall('python',str)
# print(r)#['python']

str = 'java123php56c++9python'
r = re.findall('\d',str)
#匹配数字,或[0-9]
#取反,\D或[^0-9]
# print(r)#['1', '2', '3', '5', '6', '9'] [0-9]

str = 'j1oA!_'
r = re.findall('\w',str)
#匹配数字和字母下划线,或[a-zA-Z0-9_]
#取反,\W
# print(r)#['j', '1', 'o', 'A', '_']

str = 'j1oA! ¥_\n\r*'
r = re.findall('\s',str)
#匹配空白字符
#取反,\S
# print(r)#[' ', '\n', '\r']
import re

str = 'abc,acd,afc,aac,bdf,abcdd'
r = re.findall('a[bcd]c',str)
#匹配bcd任意一个,或a[b-d]c
# print(r)#['abc', 'abc']

str = 'C#\tPythonC#\nJsJavaC# _'
r = re.findall('C#.{1}',str)
#.匹配除\n换行符之外其他字符
print(r)#['C#\t', 'C#_']

str = 'pyth0pytho1python2pythonn3'
r = re.findall('python{1,2}?',str)
#数量词*,针对前一个字符n,匹配0次或多次
#数量词+,针对前一个字符n,匹配1次或多次['python', 'pythonn']
#数量词?,针对前一个字符n,匹配0次或1次['pytho', 'python', 'python']
#python{1,2},贪婪模式,针对前一个字符n,匹配1次或2次['python', 'pythonn']
#python{1,2}?,非贪婪模式,针对前一个字符n,匹配1次['python', 'python']
print(r)#['pytho', 'python', 'pythonn']

def find(regex_str,line):
    r = re.findall(regex_str,line)
    print(r)

line = 'bobby123'
regex_str = '^b.*'#【^】以b开头,【.】后面接任意字符,【*】无限多个
find(regex_str,line)#['bobby123']
regex_str = '^b.*3$'#【$】必须以3结尾
find(regex_str,line)#['bobby123']

# 贪婪与非贪婪模式影响的是被【量词】修饰的子表达式的匹配行为
# 贪婪模式在整个表达式【匹配成功】的前提下,尽可能【多】的匹配
# 而非贪婪模式在整个表达式【匹配成功】的前提下,尽可能【少】的匹配

# 属于贪婪模式的量词,也叫做匹配优先量词,包括: 
# {m,n}、{m,}、?、*和+。 

# 在匹配优先量词后加上?,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括: 
# {m,n}?、{m,}?、??、*?和+?。 

line = '<div>test1</div>bb<div>test2</div>'
regex_str = '<div>.*</div>'#贪婪模式【默认】
find(regex_str,line)#['<div>test1</div>bb<div>test2</div>']
regex_str = '<div>.*?</div>'#非贪婪模式
find(regex_str,line)#['<div>test1</div>', '<div>test2</div>']

line = 'ooobooooooobby132'
regex_str = '.*(b.*b).*'#【(】【)】取bb之间的值
find(regex_str,line)#['bb']
regex_str = '.*?(b.*?b).*'#【?】非贪婪模式
find(regex_str,line)#['booooooob']

line = 'bobby123'
regex_str = 'b|bobby'#【|】或者
find(regex_str,line)#['b', 'b', 'b']

line = 'study in 南京大学'
regex_str = r'.*?([\u4E00-\u9FA5]+大学)'#【\u4E00-\u9FA5】汉字
find(regex_str,line)#['南京大学']

line = 'XXX出生于2001年6月'
line = 'XXX出生于2001-06'
line = 'XXX出生于2001年6月1日'
line = 'XXX出生于2001-6-1'
line = 'XXX出生于2001-06-01'
line = 'XXX出生于2001/6/1'
regex_str = r'.*出生于((\d{4}[\u4E00-\u9FA5-/]\d{1,2})([\u4E00-\u9FA5-/]\d{1,2}[\u4E00-\u9FA5]$|[\u4E00-\u9FA5-/]$|[\u4E00-\u9FA5-/]\d{1,2}$|$))'
find(regex_str,line)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值