Python-正则的基本使用

"""
在正则匹配的时候 字符串前面加一个r 的效果 
表示原生字符串 能够忽略转义符号带来的影响 \n 就是字符串 "\n" 没有换行的含义 
比如 re.findall(r"a\nbc","a\nbc")  
"""
content = "asdasd1m123123,4255,asdsdfsdf,,,1ijio134ioj234jio234"
rest = re.findall("[\d]+", content)
print(rest)
# 找出字符串中的字母
rest = re.findall("[a-zA-Z]+", content)
print(rest)
#
print(re.search("[,]+", content).group())
print(re.findall("[,]", content))

import re

# 使用group 与 groups 方法

idCard1 = "430656199610015493"

idCard2 = "43065619961001548X"

#在使用正则匹配身份证时 如果想在正确匹配到身份证时 再获取该身份证的生日年龄 这里使用分组的方式非常方便

compile1=re.compile(r"(\d{6})(?P<year>\d{4})((?P<month>\d{2})(?P<day>\d{2}))\d{2}\d{1}([0-9]|X)")
sear1=compile1.search(idCard1)
group1=sear1.groups()
print(group1[0])

# 可以直接在正则分组中新增 ?P<param>  通过 groupdict()  直接获得json 数据  通过Key 获取数据
print(sear1.groupdict())

str1 = "one1two22222three33445four444441five555512six666"

# 使用分隔split方法 根据数字分隔 英文单词结果 为: ['one', 'two', 'three', 'four', 'five', 'six', '']
compile1 = re.compile(r"\d+")
print(compile1.split(str1))

# 使用替换sub 方法 根据正则匹配到的字符 替换成想要的结果 为:one@two@three@four@five@six@
sub1=compile1.sub("@",str1)
print(sub1)

# 结合分组 使用替换对两个单词进行转换
str2="hello world"
compile2=re.compile(r"(\w+) (\w+)")
print(compile2.sub(r"\2 \1",str2))

# 在替换时对第一个单词进行大写
def f(x):
    return x.group(2).upper()+" "+x.group(1)

print(compile2.sub(f,str2))

# 使用lambda 对上面的方法进行简写
print(compile2.sub(lambda x: x.group(2).upper()+" "+x.group(1),str2))

# 查找html中的图片地址
# 有任何正则匹配上的疑问 需要上官网文档进行查询 https://docs.python.org/zh-cn/3/library/re.html
import re

file01 = open("outer_html.html",encoding="utf-8")

str1=file01.read()

# 正则模式 () 括号为分组  ?P<param> 定义该分组的名称 结果可以通过名称获取
compile=re.compile(r"<img.+?src=\"(?P<url1>.+?)\"(?P<url2>.+?)>")
list1=compile.findall(str1)
print(list1)
for j in list1:
    print(j)
print("="*50)
for i in list1:
    # 替换
    print(re.sub(r"&amp;","&",i[0]))

file01.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值