python 正则表达式

# -*- coding: UTF-8 -*-
import re
#正则表达式各
"""
多数字母和数字前加一个反斜杠时会拥有不同的含义。
标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。
反斜杠本身需要使用反斜杠转义。
由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r'\t',等价于 '\\t')匹配相应的特殊字符。
"""
s = "我是百度http://www.baidu.com/news.html你是谁呢,我是谷歌不是百度"
# rearch 扫描字符串返回第一个成功匹配的对象,否则返回None
res = re.search('百度',s)
res.group()

#match值匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,返回None
re0 = re.match('我是',s)

#re.match与re.search的区别
# findall 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
res1 = re.findall('百度',s)

#split 按照能匹配到的字符串将按照字符串分割返回列表
r = re.split('w',s)

#^ 匹配以 我是 为开头的字符串
res2 = re.search('^我是...',s)
res2.group()

#$ 匹配以百度为结尾的字符串
res3 = re.search('(...百度$)',s)
res3.group()

# '.'可开匹配除换行符(\n)的任意字符
s1 = "我是\tleo"
res4 = re.search('(.....)',s1)
res4.group()
"""
\b匹配一个单词边界,也就是指单词和空格间的位置。
'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
表示字母数字与非字母数字的边界,     非字母数字与字母数字的边界
re.split('123\\b','==123!! abc123. 123. 123abc. 123')
\本身需要通过\进行转义,否则将看作字符串本身

\B 同\b 相反,匹配非单词边界	
"""
s2 = 'heollao my ename is loe'
s3 = re.split('123\\b','==123!! abc123. 123. 123abc. 123')
res5 = re.split(' \\b',s2)
res6 = re.split('o\\B',s2)

#\d 匹配任意数字 等价0~9, \D匹配任意非数据
s4 = 'hel2lo wor3ld'
re1 = re.findall('\\D',s4)



#[...] 用来表示一组字符的集合,对匹配的字符,限定可选的范围的一个值
st1 = '0755--3874289深圳固话号码hello world'
res7 = re.match(r'\d\d\d\d[-/\']', st1)
res8 = re.match(r'[0-9][0-9][0-9][0-9][-/\']', st1)
print(res7)

st = 'wWw.baidu.com'  #findall 函数 re.I 忽略字符串大小写
res10 = re.findall(r'w*.baidu.com',st, re.I)
print(res10)

s = 'leo name is leoo  not 456 leo1 eo23eoleo'
res = re.findall('eo',s)    # 返回['eo', 'eo', 'eo']
res1 = re.findall('eo{2}',s)  # 返回['eoo', 'eoo']
res2 = re.findall('(?:eo){1,3}',s)  # 返回 ['eo', 'eo', 'eo', 'eoeo', 'eo']
#(?:eo){1,3} 代表eo  eoeo  eoeoeo  在字符串中是否有出现并返回在列表中   {1,3} 标识eo整体重复的次数

res4 = re.findall('[0-9]{1,3}',s)# [0-9]{1,3} 可以匹配一到三个数字 ['456', '1', '23']
res5 = re.findall('[0-9]{2}',s) # [0-9]{2}连续出现两个数字 ['45', '23']
res5 = re.findall('[0-9]+',s) # [0-9] 匹配出现一次或多次
res6 = re.findall('[a-z0-9A-Z]{2}',s) #[a-z0-9A-Z]{2} 匹配连续出现字母或数字的字符串,并返回列表

s = 'leoeo name is leoo  not 456 leo1 eo23eoleo'
res3 = re.findall('(eo){1,3}',s)   #(eo){1,3}配 eo字符串,{1,3}不起到任何作用
#url 案例
String = "baidu 的网页地址为 https://www.baidu.com, Google 的网址为 http://google.com 自己的网址 http://leo.com/ab12.html"

print(re.findall('https?://(?:w*\.)?\w+\.com(?:/\w+\.html)?',String))

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值