python正则表达式-正则基础

news/2024/7/7 20:23:29

目录

一、任一元素

二、匹配特定的字符类别

         1、\d  \w

三、多个元素

         1、两位元素 [][]

         2、* + ?

         3、重复次数 {}

         4、位置匹配 ^ $

         5、子表达式()


 一、任一元素

        []:1、[ab] 匹配a或b;

       2、[0-9] 匹配任意一个数字;[a-z] 匹配任何一位小写字母;[A-Z] 匹配任何一位大写字母;

       3、[a-zA-Z] 匹配任意一位大小写字母;

       4、. 匹配任意一个字符;^:取反

import re
answer_zimu='aiIJ2db33c4AI'
print('字母:',re.findall('[a-z]',answer_zimu))

answer_shuzi='aiIJ2db33c4AI'
print('数字:',re.findall('[0-9]',answer_shuzi))

answer_str='aiIJ2db33c4AI'
print('大小写:',re.findall('[a-zA-Z]',answer_str))

str1=['sales1.xls','sales2.xls','spac1.xls']
answer_str1=map(lambda x:re.findall('sales.\.xls',x),str1)  #'sales.\.xls'  \转义字符
print('.输出:',list(answer_str1))

str2=['sales1.xls','sales2.xls','salesn.xls']
answer_str2=map(lambda x:re.findall('sales[^0-9]\.xls',x),str2)  #'sales[^0-9]\.xls'  \转义字符
print('取反:',list(answer_str2))

字母: ['a', 'i', 'd', 'b', 'c']
数字: ['2', '3', '3', '4']
大小写: ['a', 'i', 'I', 'J', 'd', 'b', 'c', 'A', 'I']
.输出: [['sales1.xls'], ['sales2.xls'], []]
取反: [[], [], ['salesn.xls']]

二、匹配特定的字符类别

  1、\d  \w

     1、\d 任意一个数字[0-9];\D 任意一个非数字[^0-9];\w 任意一个数字字母下划线[a-zA-Z0-9_];

     2、 \W 任意一个非字数字字母下划线;\s 匹配任意一个空白字符[\f\n\r\t\v];\S 匹配任意一个非空白字符[^\f\n\r\t\v]

import re
str=['12839','A1HY98','9okjcds','siU_U','siU U']
answer_str=map(lambda x:re.findall('\d\d\d\d\d',x),str)
print('数字:',list(answer_str))

answer_str=map(lambda x:re.findall('\w\w\w\w\w\w\w',x),str)
print('六位元素:',list(answer_str))

answer_str=map(lambda x:re.findall('\w\w\w\s\w',x),str)
print('空白字符:',list(answer_str))

数字: [['12839'], [], [], [], []]
六位元素: [[], [], ['9okjcds'], [], []]
空白字符: [[], [], [], [], ['siU U']]

三、多个元素

  1、两位元素 [][]

        [][]:[a-z][0-9] 匹配a、b和c和任意一位数字

import re
str='asc99d71'
print(re.findall('[a-z][0-9]',str))
['c9', 'd7']

   2、* + ?

        * 零个或多个字符;+ 一个或多个字符;? 零个或一个字符           

com=['http://www.ben@forta.com','httpps://www.ben@forta.com','http://www.forta@forta.com']
answer_com1=map(lambda x:re.findall('http[\w]+://[\w.]+@[\w.]+',x),com)
print('+ 输出:',list(answer_com1))

answer_com2=map(lambda x:re.findall('http[\w]*://[\w.]+@[\w.]+',x),com)
print('* 输出:',list(answer_com2))

answer_com3=map(lambda x:re.findall('http[\w]?://[\w.]+@[\w.]+',x),com)
print('? 输出:',list(answer_com3))

+ 输出: [[], ['httpps://www.ben@forta.com'], []]
* 输出: [['http://www.ben@forta.com'], ['httpps://www.ben@forta.com'], ['http://www.forta@forta.com']]
? 输出: [['http://www.ben@forta.com'], [], ['http://www.forta@forta.com']]

  3、重复次数 {}

number=['12345678910','10-6-204','1000-344-0009']
answer_num1=map(lambda x:re.findall('\d{11}',x),number)
print('11位手机号:',list(answer_num1))

answer_num2=map(lambda x:re.findall('\d{0,4}-\d{1}-\d{0,4}',x),number)
print('固定范围:',list(answer_num2))

answer_num3=map(lambda x:re.findall('\d{0,4}-\d{1,}-\d{0,4}',x),number)
print('至少满足:',list(answer_num3)) 

11位手机号: [['12345678910'], [], []]
固定范围: [[], ['10-6-204'], []]
至少满足: [[], ['10-6-204'], ['1000-344-0009']]

   4、位置匹配 ^ $

      ^限制开头   $限制结尾

weizhi=['12345678910','12345678910and','34455667778']
answer_wenzi1=map(lambda x:re.findall('^1\d{10}',x),weizhi)
print('^限制开头:',list(answer_wenzi1))

answer_wenzi2=map(lambda x:re.findall('^1\d{10}$',x),weizhi)
print('^ $限制开头结尾:',list(answer_wenzi2))

answer_wenzi3=map(lambda x:re.findall('\w+[a-z]$',x),weizhi)
print('$限制结尾:',list(answer_wenzi3))

^限制开头: [['12345678910'], ['12345678910'], []]
^ $限制结尾: [['12345678910'], [], []]
^ $限制结尾: [[], ['12345678910and'], []]

 5、子表达式()

       当作一个独立元素来使用,()

str='<b>123</b><b>加粗字体</b><b>斜体</b>'
print('子表达式:',re.findall('<b>(.*?)</b>',str))  #去除两边的模式

子表达式: ['123', '加粗字体', '斜体']

http://lihuaxi.xjx100.cn/news/1146092.html

相关文章

看过来!一文揭秘为什么选TikTokTikTok数据怎么分析

为什么要选择TikTok开小店&#xff1f;以及商家在运营TikTok之前要了解掌握哪些TikTok相关数据&#xff1f;要分析哪些数据、怎么看TikTok数据才能让商家更快更及时地改进优化自己的TikTok营销策略&#xff1f;往下看。 一、选择TikTok开小店的原因&#xff1a; 1. TK作为一个…

AIGC产业研究报告2023——三维生成篇

定义 人工智能三维生成是指利用深度神经网络学习并生成物体或场景的三维模型&#xff0c;并在三维模型的基础上将色彩与光影赋予物体或场景使生成结果更加逼真。在应用中&#xff0c;生成物体或场景的三维模型称为三维建模&#xff0c;生成三维模型的色彩与光影称为三维渲染。…

Python快速批量修改图片尺寸

之前我们写过快速批量获取图片的大小&#xff0c;该文章链接在这里&#xff1a;Python每日一个知识点9----批量输出图片尺寸 今天我们分享一个快速批量修改图片尺寸的小脚本&#xff0c;我们一下看一下 先看一下目录结构&#xff1a; 文件夹&#xff1a;【原始图片】&#xf…

【PCIE体系结构十一】部分物理层发送接收逻辑细节

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 参考书籍&#xff1a;《PCI.EXPRESS系统体系结构标准教材 Mindshare》 目录 物理层…

后台管理系统中数据库存储文章用什么类型,mysql数据库中怎么存储大段文字呢?(1000个中文字符以上)

问题 一个小型的文章系统的网站&#xff0c;用来存储内容content的字段&#xff0c;我选择的是varchar(8000),最多可容纳4000汉字&#xff0c;对绝大多数用户来说&#xff0c;应该够用了。但是一个问题是允许用户输入代码&#xff08;HTML&#xff0c;JS&#xff0c;CSS等&…

随想010:该在哪里花费时间

这篇短文写于 2023 年 5 月。 X Window 至今几乎仍是 UNIX/Linux 所有 GUI 的基础。先来看一下 X Window 历次版本变更&#xff0c;重点关注发布的时间。 1984 年 6 月&#xff0c;X Window 第一个版本 X1 由麻省理工学院发布&#xff1b;1985 年 1 月&#xff0c;X Window 版…

Spring Security 6.x 系列【43】授权服务器篇之设备授权模式

有道无术,术尚可求,有术无道,止于术。 本篇Spring Boot 版本 3.0.6 本篇Spring Security 版本 6.1.0 本篇Spring Authorization Server 版本 1.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 前言2. 概述3. 交互流程3.1 设…

js实现分片上传

代码贴过来就能用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><metahttp-equiv"X-UA-Compatible"content"IEedge"/><metaname"viewport"content"widthdevice-wi…