Python高级语法与正则表达式(二)

简介: 正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

Python高级语法与正则表达式(一)+https://developer.aliyun.com/article/1543798?spm=a2c6h.13148508.setting.14.1fa24f0e0mB0Dh


什么是正则表达式


正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。


模式:一种特定的字符串模式,这个模式是通过一些特殊的符号组成的。 某种:也可以理解为是一种模糊匹配。


精准匹配:select * from blog where title='python';


模糊匹配:select * from blog where title like ‘%python%’;


正则表达式并不是Python所特有的,在Java、PHP、Go以及JavaScript等语言中都是支持正则表达式的。


正则表达式的功能


① 数据验证(表单验证、如手机、邮箱、IP地址)


② 数据检索(数据检索、数据抓取)


③ 数据隐藏(1356235 王先生)


④ 数据过滤(论坛敏感关键词过滤)


什么是re模块


在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个re模块


# 第一步:导入re模块
import re
# 第二步:使用match方法进行匹配操作
result = re.match(pattern正则表达式, string要匹配的字符串, flags=0)
# 第三步:如果数据匹配成功,使用group方法来提取数据
result.group()


match函数参数说明:


参数

描述

pattern 匹配的正则表达式

string

要匹配的字符串。

flags

标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志

匹配成功re.match方法返回一个匹配的对象,否则返回None。


我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配数据。


正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:



修饰符

描述

re.I

使匹配对大小写不敏感

re.L

做本地化识别(locale-aware)匹配,这个功能是为了支持多语言版本的字符集使用环境的,比如在转义符\w,在英文环境下,它代表[a-zA-Z0-9_],即所以英文字符和数字。如果在一个法语环境下使用,缺省设置下,不能匹配"é" 或 "ç"。加上这L选项和就可以匹配了。不过这个对于中文环境似乎没有什么用,它仍然不能匹配中文字符。


re.M

多行匹配,影响 ^ 和 $

re.S

使 . 匹配包括换行在内的所有字符

re.U

根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.

re.X

VERBOSE,冗余模式, 此模式忽略正则表达式中的空白和#号的注释,例如写一个匹配邮箱的正则表达式。该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

re模块的相关方法


re.match(pattern, string, flags=0)

  • 从字符串的起始位置匹配,如果匹配成功则返回匹配内容, 否则返回None


☆ re.findall(pattern, string, flags=0)

  • 扫描整个串,返回所有与pattern匹配的列表


  • 注意: 如果pattern中有分组则返回与分组匹配的列表


  • 举例: re.findall("\d","chuan1zhi2") >> ["1","2"]


☆ re.finditer(pattern, string, flags)

  • 功能与上面findall一样,不过返回的时迭代器


参数说明:


  • pattern : 模式字符串。


  • repl : 替换的字符串,也可为一个函数。


  • string : 要被查找替换的原始字符串。


  • count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。


  • flags: 匹配方式:


            re.I 使匹配对大小写不敏感,I代表Ignore忽略大小写


            re.S 使 . 匹配包括换行在内的所有字符


            re.M 多行模式,会影响^,$


案例1:查找一个字符串中是否具有数字“8”  


import re
 
 
result = re.findall('8', '13566128753')
# print(result)
if result:
    print(result)
else:
    print('未匹配到任何数据')


案例2:查找一个字符串中是否具有数字


import re
 
 
result = re.findall('\d', 'a1b2c3d4f5')
# print(result)
if result:
    print(result)
else:
    print('未匹配到任何数据')


案例3:查找一个字符串中是否具有非数字


import re
 
 
result = re.findall('\D', 'a1b2c3d4f5')
# print(result)
if result:
    print(result)
else:
    print('未匹配到任何数据')


正则表达式编写:查什么、查多少、从哪查


1、查什么


代码

功能

(英文点号)

匹配任意1个字符(除了\n)
[ ] 匹配[ ]中列举的某个字符,专业名词 => 字符簇
[^指定字符] 匹配除了指定字符以外的其他某个字符,^专业名词 => 托字节
\d 匹配数字,即0-9

\D

匹配非数字,即不是数字
\s 匹配空白,即 空格,tab键

\S

匹配非空白

\w

匹配非特殊字符,即a-z、A-Z、0-9、_

\W

匹配特殊字符,即非字母、非数字、非下划线

字符簇常见写法:


① [abcdefg] 代表匹配abcdefg字符中的任意某个字符(1个)


② [aeiou] 代表匹配a、e、i、o、u五个字符中的任意某个字符


③ [a-z] 代表匹配a-z之间26个字符中的任意某个


④ [A-Z] 代表匹配A-Z之间26个字符中的任意某个


⑤ [0-9] 代表匹配0-9之间10个字符中的任意某个


⑥ [0-9a-zA-Z] 代表匹配0-9之间、a-z之间、A-Z之间的任意某个字符


字符簇 + 托字节结合代表取反的含义:


① [^aeiou] 代表匹配除了a、e、i、o、u以外的任意某个字符


② [^a-z] 代表匹配除了a-z以外的任意某个字符


\d 等价于 [0-9], 代表匹配0-9之间的任意数字


\D 等价于 [^0-9],代表匹配非数字字符,只能匹配1个



2、查多少


代码

功能

*

匹配前一个字符出现0次或者无限次,即可有可无(0到多)

+

匹配前一个字符出现1次或者无限次,即至少有1次(1到多)

?

匹配前一个字符出现1次或者0次,即要么有1次,要么没有(0或1)

{m}

匹配前一个字符出现m次,匹配手机号码\d{11}

{m,}

匹配前一个字符至少出现m次,\w{3,},代表前面这个字符最少要出现3次,最多可以是无限次

{m,n}

匹配前一个字符出现从m到n次,\w{6,10},代表前面这个字符出现6到10次


基本语法:


正则匹配字符.或\w或\S + 跟查多少


如\w{6, 10}


如.*,匹配前面的字符出现0次或多次


3、从哪查


代码

功能

^

匹配以某个字符串开头

$

匹配以某个字符串结尾


正则工具箱 :


正则表达式代码生成工具

相关文章
|
26天前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
52 4
|
5天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
16 5
|
5天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
10天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
15天前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
15 2
|
21天前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
1月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
21 1
|
1月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
|
1月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
27 7
|
1月前
|
存储 C语言 索引
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
本文全面介绍了Python的基础知识,包括Python的诞生背景、为什么学习Python、Python的应用场景、Python环境的安装、Python的基础语法、数据类型、控制流、函数以及数据容器的使用方法,旨在为Python零基础读者提供一篇全面掌握Python语法的博客。
39 0
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法