python基础之正则表达式

什么是正则表达式?

正则表达式并不仅仅是python的专利,几乎其他的语言都有正则表达式。就比如bash就有正则表达式命令--grep,个人感觉python中的正则表达式类似于

grep -o

正则表达式是用于处理字符串的强大工具,虽然效率上可能不高,但是功能强大!

正则表达式设定了一系列语法,比如说“ . ”表示任意单个字符,\d表示单个数字……  通过组合这些规则我们可以形成一个pattern(模式)!凡是符合这个pattern的字符串,我们就认为它被匹配了,否则,则代表这个字符串是不合法的!

正则表达式的语法:

单个字符 具体说明
. 匹配任意字符(除了换行符\n)
[] 匹配字符集,[0-1]表示数字,[a-z]表示小写字母
\ 转义字符,改变其后字符的原意
[^]
\d 与[0-9]功能相同,表示数字
\D 非数字,即[^\d]
\s 空白字符即:[<空格>\t\r\f\n\v]
\S 非空白字符
\w 单词字符[a-zA-Z0-9]
\W 非单词字符[^\w]

上面表格中就是单个字符。当我们要匹配一个字母时,我们可以这样写:[a-z]  .但是如果我们要匹配两个字符的时候该怎么办?

大家可能会想到这样:[a-z][a-z]   好,用这样的方法也可以。但是如果我们要匹配10个甚至数百个或者不限定字符的长度该怎么办?那我们就要用到数量词了。

数量词 说明
* 匹配前面的字符任意次(0次或者无限次)
+ 匹配前面的字符一次或者无限次
? 匹配前面的字符0次或者1次
{m,n} 匹配前面的字符最小m次,最多n次

当我们想要匹配以a开头的字符串时,就需要用到边界匹配:

^ 匹配字符串开头,在多行模式中匹配每一行的开头
$ 匹配字符串结尾,在多行模式中匹配每一行的结尾
\A 仅匹配字符串开头
\Z 仅匹配字符串结尾
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b‘ 可以匹配"never" 中的 ‘er‘,但不能匹配 "verb" 中的 ‘er‘。
\B 匹配非单词边界。‘er\B‘ 能匹配 "verb" 中的 ‘er‘,但不能匹配 "never" 中的 ‘er‘

逻辑字符与分组:

| 类似于或
() 匹配括号内的表达式,也表示一个组
(?Pname..) 分组,除了原有的编号外再指定一个额外的别名
\n 引用第n个分组的表达式匹配到的字符
(?P=name) 引用别名为name的分组表达式匹配到的字符

另外因为python中也使用\作为转义字符,而正则表达式也需要\作为转义字符,假如你需要匹配文本中的字符"\",则需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠。为了避免这种复杂的情况,python为我们提供了r前缀(原生字符串)!r‘pattern‘pattern中的所有字符串表示本意,也就是\就是\,不代表转义字符了!

Python提供re模块,包含所有正则表达式的功能,所以如果我们要使用正则表达式的话,需要:

import re

python正则表达式常用的5种操作:

1  re.metch("pattern","string") :该方法头部开始匹配,若头部符合pattern则返回一个Match对象否则,则返回None)

import re
ret=re.match(‘[a-z]‘,‘1shdkfasdf‘)
print(ret)

结果:None

import re
ret=re.match(‘[a-z]‘,‘shdkfasdf‘)
print(ret)

结果:<_sre.SRE_Match object; span=(0, 1), match=‘s‘>

常用该方法判断是否匹配:import reinput_str=‘ashdfjhakdsf‘if re.match(‘[a-z]‘,input_str):    print(‘ok!!‘)else:    print(‘not found!!‘)

2  re.search(‘pattern‘,‘ string‘):匹配整个字符串,直到找到一个匹配,若找到一个匹配,则返回一个Match对象,没有则返回None。

print(re.search(‘[0-9]{3}‘,‘sdfkj123‘))
结果:<_sre.SRE_Match object; span=(5, 8), match=‘123‘>

#一般这样用
if re.search(‘[0-9]{3}‘,‘sdfkj123‘):
    print(‘ok!!‘)
else:
    print(‘not found!!‘)

 

3  re.split():切分字符串

有的同学就要问了,我们不是有str.split()或者list.split……方法来切分么,为啥还要用这个呢?

请看实例:

a=‘a s d    g‘
print(a.split(‘ ‘))
结果:[‘a‘, ‘s‘, ‘d‘, ‘‘, ‘‘, ‘‘, ‘g‘]
#当字符串中有多个连续的空格时,切分的结果就是这么的不尽如人意!

a=‘a s d    g‘
print(re.split(‘\s+‘,a))
结果:[‘a‘, ‘s‘, ‘d‘, ‘g‘]

4  re.findall():找到所有的匹配到的字符并以list的方式返回。

ret=re.findall(‘a‘,‘askdjflas‘)
print(ret)结果:[‘a‘, ‘a‘]

5  re.sub(‘pattern‘,‘替换为‘,‘string‘,count=):将匹配到的字符替换,可以指定次数。

ret=re.findall(‘a‘,‘askdjflas‘)
print(ret)
结果:1skdjfl1s

正则表达式应用实例:

匹配手机号:

info=‘my phone is 18766666666‘
ret=re.search(‘1[358]\d{9}‘,info)
print(ret.group())
结果:18766666666

匹配ip v4地址:

info=‘my phone is 18766666666,my ip is 2.187.5.6‘
ret=re.search(‘(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}‘,info)
print(ret.group())
结果:2.187.5.6
时间: 2024-10-07 05:06:29

python基础之正则表达式的相关文章

Python基础之 正则表达式指南

本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程. 注意:本文基于Python2.4完成:如果看到不明白的词汇请记得百度谷歌或维基,whatever. 尊重作者的劳动,转载请注明作者及原文地址 >.<html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法

Python基础 :正则表达式

一.前言 1.1正则表达式简述 正则表达式是一种查找以及字符串替换操作.正则表达式在文本编辑器中广泛使用,比如正则表达式被用于: 1.检查文本中是否含有指定的特征词 2.找出文中匹配特征词的位置 3.从文本中提取信息,比如:字符串的子串 4.修改文本 与文本编辑器相似,几乎所有的高级编程语言都支持正则表达式.在这样的语境下,"文本"也就是一个字符串,可以执行的操作都是类似的.一些编程语言(比如Perl,JavaScript)会检查正则表达式的语法. 1.2 常用的正则匹配工具 在线匹配

Python高手之路【五】python基础之正则表达式

下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print(result) 字符^:匹配以什么开头 import re st = 'python' result = re.findall('^py',st) print(result) 字符$:匹配以什么结尾 import re st = 'python' result = re.findall('n$',s

Python基础13_正则表达式,re模块,

一. 正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本. 正则表达式由普通字符和元字符组成, 普通字符包含大小写字母, 数字. 在匹配普通字符的时候我们直接写就可以了 元字符是正则表达式的灵魂 1. 字符组 字符组用[]括起来, 在[]中的内容会被匹配 [a-zA-Z0-9]    表示所有的数字字母 2. 简单元字符 .   

python基础之正则表达式和re模块

正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. 字符匹配(普通字符,元字符): 1 普通字符(完全匹配):大多数字符和字母都会和自身匹配 1 >>> import re 2 >>> res='hello world good morning' 3 >>> re.findall(

python基础-RE正则表达式

re 正则表示式 正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. 一.正则表达式的作用1.给字符串进行模糊匹配,2.对象就是字符串 二.字符匹配(普通字符,元字符)1.普通字符:数字字符和英文字母和自身匹配2.元字符:. ^ $ * + ? {} [] () | \re.方法("规则","匹配的字符串"). 匹配任意

1.22 Python基础知识 - 正则表达式

Python正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数. 本章节主要介绍Pyt

Python开发【第一篇】Python基础之正则表达式补充

正则表达式 一简介:就其本质而言,正则表达式(或RE)是一种小型的.高度专业化的标称语言,(在Python中)它内嵌在Python中,并通过re模块实现.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. 先导入后执行:import re 二.字符匹配: 字符匹配(普通字符,元字符):普通字符:大多数字符和字母都会和自身匹配 >>> re.findall('alex','yuanaleSxalexwupeiqi') ['alex'] 2元字符:. ^ $ * + ? {

python 基础学习 正则表达式1(规则)

正则表达式: *正则表示式(或RE)是一种小型的.高度专业化的编程语言,(在python中)它内嵌在python中,并通过re模块实现. -可以为想要匹配的相应字符串指定规则 -该字符串集可能包含英文语句.e-mail地址.命令或任何你想要的东西 -可以问诸如"这个字符串匹配该模式吗?" -"在这个字符串中是否有部分匹配该模式呢?" -你也可以使用re以各种方式来修改或分隔字符串 *正则表达式模式被编译成一系列的字节码,然后由用c编写的匹配引擎执行 *正则表达式语言