python学习笔记4-正则表达式

import re -- 所有正则表达式相关的功能都包含在re模块中

re.sub() -- 字符串替换

>>> import re
>>> s= "100 NORTH BROAD ROAD"
>>> re.sub(‘ROAD$‘,‘RD.‘,s)
‘100 NORTH BROAD RD.‘

>>> s = "100 BROAD"
>>> re.sub(‘\\bROUAD$‘,‘RD.‘,s)
‘100 BROAD‘

>>> s=‘100 BROAD ROAD APT. 3‘
>>> re.sub(r‘\bROAD$‘,‘RD.‘, s)
‘100 BROAD ROAD APT. 3‘
>>> re.sub(r‘\bROAD\b‘, ‘RD.‘,s)
‘100 BROAD RD. APT. 3‘

注:

1) \b 表示在左边必须有一个分隔符。

2) 正则表达式前面的 ‘r‘告诉python,字符串中没有任何字符需要转义。eg., ‘\t‘是一个制表符,r‘\t‘是一个字符‘\‘紧跟一个字符‘t‘

re.search() -- 用正则表达式来匹配字符串,如果匹配成功,则返回一个匹配对象,如果没有匹配成功,则返回none

>>> import re
>>> pattern = ‘^M?M?M?$‘
>>> re.search(pattern, ‘M‘)
<_sre.SRE_Match object; span=(0, 1), match=‘M‘>
>>> re.search(pattern,‘MM‘)
<_sre.SRE_Match object; span=(0, 2), match=‘MM‘>
>>> re.search(pattern,‘MMM‘)
<_sre.SRE_Match object; span=(0, 3), match=‘MMM‘>
>>> re.search(pattern,‘MMMMM‘)
>>> re.search(pattern,‘‘)
<_sre.SRE_Match object; span=(0, 0), match=‘‘>
>>> import re
>>> pattern = ‘^M?M?M?$‘
>>> re.search(pattern, ‘M‘)
<_sre.SRE_Match object; span=(0, 1), match=‘M‘>
>>> re.search(pattern,‘MM‘)
<_sre.SRE_Match object; span=(0, 2), match=‘MM‘>
>>> re.search(pattern,‘MMM‘)
<_sre.SRE_Match object; span=(0, 3), match=‘MMM‘>
>>> re.search(pattern,‘MMMMM‘)
>>> re.search(pattern,‘‘)
<_sre.SRE_Match object; span=(0, 0), match=‘‘>

注:

1)?-- 表示匹配可选

2) M{0,3} -- 表示匹配0~3次M

松散正则表达式:

1. 空白符被忽略。空格、制表、回车在正则表达式中并不会被匹配。如果想匹配这些字符,需要加转义字符‘\‘。

2.注释信息(以#开头直到行尾)被忽略。

3. 用松散正则表达式时,需要传递re.VERBOSE参数。

>>> pattern = ‘‘‘
^                    #beginning of string
M{0,3}               #thousands - 0 to 3 Ms
(CM|CD|D?C{0,3})     #hundreds  - 900(CM), 400(CD),0-300 (0 to 3 Cs) or 500-800
                     #(D, followed by 0 to 3 Cs )
(XC|XL|L?X{0,3})     #tens - 90(XC), 40(XL), 0-30 (0 TO 3 Xs), or 50~80
                     #(L, followed by 0 to 3 Xs)
(IX|IV|V?I{0,3})     #ones - 9 (IX), 4(IV),0-3 (0 to 3 Is),
                     #or 5~8 (V,followed by 0 to 3 Is)
$                    #end of string
‘‘‘
>>> re.search(pattern, ‘M‘, re.VERBOSE)
<_sre.SRE_Match object; span=(0, 1), match=‘M‘>
>>> re.search(pattern, ‘MCMLXXXIX‘, re.VERBOSE)
<_sre.SRE_Match object; span=(0, 9), match=‘MCMLXXXIX‘>

案例:匹配电话号码

\d: -- 匹配所有0-9数字

\D: -- 匹配除了数字外所有字符

+:-- 匹配一次或多次

* : -- 匹配0次或多次

>>> phonePattern = re.compile(r‘(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$‘)
>>> phonePattern.search(‘work 1-(800) 555.1212 #1234‘).groups()
(‘800‘, ‘555‘, ‘1212‘, ‘1234‘)

正则表达式符号及其含义:

$--字符串结尾

^--字符串开头

x?-- 匹配0次或一次x字符

x+:-- 匹配一次或多次x字符

x* : -- 匹配0次或多次x字符

x{m,n} -- 表示匹配m~n次x字符

x{n} -- 表示匹配n次x字符

(a|b|c) -- 表示匹配a或b或c

(x) -- 这是一个组合,被匹配到的字符串会被存储,用re.search()返回对象的groups()方法获得被匹配的值

\d: -- 匹配所有0-9数字

\D: -- 匹配除了数字外所有字符

\b: --匹配一个单词边界

时间: 2024-10-30 00:53:14

python学习笔记4-正则表达式的相关文章

python学习笔记八——正则表达式

1.元字符 []-常用来指定一个字符集:[abc];[a-z] -元字符在字符集中不起作用:[akm$] -补集匹配不在区间范围内的字符:[^5] ^-匹配行首 $-匹配行尾 \-后可加不同字符以表示不同意义,也可用于取消所有元字符 \d 匹配任何十进制数,相当于[0-9] \D 匹配任何非数字字符,相当于[^0-9] \s 匹配任何空白字符,相当于[\t\n\r\f\v] \S 匹配任何非空白字符 \w 匹配任何字母数字字符 \W 匹配任何非字母数字字符 *-匹配前一个字符零次或多次 +-至少

Python学习笔记(4):正则表达式

正则表达式 用法: >>>import re >>>s=r'abc' >>>re.findall(s,'abcabc') 正则语法: 元字符: . ^ $ * + ? {} [] \ | () [] 用于选择匹配 [abc] 匹配 a或者b或者c [^]用于反选,比如[^abc]不含有abc的 ^用于匹配行首 r'^abc' 匹配'abcd'而不是'dabc' $用于匹配行尾 类似^ \ : 用于转义. \d 表示数字 [0-9] \D 表示d的反 [

Python学习笔记013_正则表达式

Python中的正则表达式是通过 re 模块实现的. 通配符 .  表示除了换行以外的任何字符; 编写正则表达式时使用  r're'  , r + 正则表达式内容 >>> import re >>> >>> re.search(r'Fish.','I love FishC.com!') <_sre.SRE_Match object; span=(7, 12), match='FishC'> >>> # 如果要匹配 . 本身

python 学习笔记day09-pythonz正则表达式、socket模块

RE模块 核心函数和方法 match函数 尝试用正则表达式模式从字符串的开头匹配,如果匹配成功,则返回一个匹配对象,否则返回None >>> re.match('foo','food')   #在food 搜索foo             <_sre.SRE_Match object at 0xb70babb8>            >>> m = re.match('foo','food')            >>> m.grou

python学习笔记(正则表达式)

什么是正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.最简单的正则表达式就是普通字符串,可以匹配其自身.换包话说,正则表达式’python’ 可以匹配字符串’python’ .你可以用这种匹配行为搜索文本中的模式,并且用计算后有值并发特定模式,或都将文本进行分段. 通配符 正则表达式可以匹配多于一个的字符串,你可以使用一些特殊字符创建这类模式.比如点号(.)可以匹配任何字符.在我们用window 搜索时用问号(?)匹配任意一位字符,作用是一样的.那么

python学习笔记(十一) - 正则表达式

一.基础知识: \d 匹配一个数字 \w 匹配一个字母或数字 . 匹配任意字符 * 表示任意个字符 + 表示至少一个字符 ? 表示0个或1个字符 {n} 表示n个字符,{n, m} 表示n - m个字符 \s 表示匹配一个空格(包括Tab等空白符),\s+表示至少一个空格 [0-9a-zA-Z\_] 可以匹配一个数字.字母或者下划线 [0-9a-zA-Z\_]+ 可以匹配至少由一个数字.字母或者下划线组成的字符串 [a-zA-Z\_][0-9a-zA-Z\_]* 可以匹配由字母或下划线开头,后接

Python学习笔记——正则表达式

今天把之前学的正则表达式好好总结总结. 一.元字符 . :  .表示可以匹配任意一个字符 \d  :  \d表示可以匹配任意一个数字 \D  : \D表示可以匹配任意一个非数字 \s  :  \s表示可以匹配任意一个空白字母 \S : \S表示可以匹配任意一个非空白字母 \w : \w表示可以匹配任意一个字符 \W: \W表示可以匹配任意一个非字符 []  : []表示可以匹配括号中的任意的一个字符  例:[abc] , [a-z] , [^ab] ^  : ^表示只匹配字符串的开始部分    

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python

python &nbsp; 学习笔记 (核心)

python    学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*-    //字符编码 不区分单引号和双引号,x='hello',x[0],x[-1]指最后一个字符,x[2:4]取子串, '''hello''' #hello三引号会保留文本输入时的换行符制表符等不需要转义,用于多行原样输入保存 'hello'+'world' #字符串拼接,'hello'*2 #字符串重复 help(fun) #帮助,help(module.met

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f