Python学习 之 正则表达式

1、简单的正则表达式

import re
s=r‘abc‘
re.findall(s,"aaaaaaaaaaaaaaa")   #结果为[]
re.findall(s,"abcaaaaaaaaaaaa")    #结果为[‘abc‘]
re.findall(s,"abcaaaaaabcaaaa")    #结果为[‘abc‘,‘abc‘]

2、元字符

[] :指定一个字符集  例如:r‘t[io]p‘  满足的字符串包括‘tip‘或‘top‘

  加上^表示取反  例如:r‘t[^io]p‘  满足的字符串包括除‘tip‘或‘top‘之外的字符串

^ :匹配行首  r‘^abc‘  r‘\^abc‘

$ :匹配行尾

\ :\d=[0-9],\D=[^0-9],\s=[\t\n\r\f\v],\S=[^\t\n\r\f\v],\w=[a-zA-Z0-9],\W=[^a-zA-Z0-9]

  \[或\\取消所有的元字符

. :匹配任意字符

* :匹配零次或多次

+ :匹配一次或多次

?  :匹配一次或零次  例如:r"^010-?\d{8}$"

r=r"ab+?"    #‘+?‘是最小匹配模式,非贪婪模式
re.findall(r,‘abbbbbbbb‘)  #结果是‘ab‘

{} :{m,n}最少重复m次,最多重复n次 {0,}=* {1,}=+ {0,1}=?

() :分组,经常和‘|’一起使用,例如email的正则表达式r‘\w{3}@\w+(\.com|\.cn)‘

  注意:findall匹配的正则表达式中有分组,先返回匹配分组中的数据

例如:

s=‘adjadlk hello src=csvt yes jojjlk  jlij hello src=python yes jopm‘
r1=r‘hello src=.+ yes‘
re.findall(r1,s)   #结果[‘hello src=csvt yes‘,‘hello src=python yes‘]
r1=r‘hello src=(.+) yes‘
re.findall(r1,s)   #结果[‘csvt‘,‘python‘]

|

3、正则表达式的编译

编译后的正则表达式效率比编译前的要高许多,例如:

#匹配电话号码
r1=r"\d{3,4}-?\d{8}"
p_tel=re.compile(r1)   #编译后的正则表达式效率要高很多
p_tel.findall(‘010-12345678‘)

编译时,可以加一些参数,用来实现特殊功能和语法变更,例如:

csvt_re=re.compile(r‘csvt‘,re.I)   #re.I表示在编译时忽略大小写
csvt_re.findall(‘CSVT‘)  #结果是[‘CSVT‘]
csvt_re.findall(‘csvt‘)  #结果是[‘csvt‘]
csvt_re.findall(‘CsVt‘)  #结果是[‘CsVt‘]

4、执行匹配

(1)match():决定RE是否在字符串刚开始的位置匹配。未匹配,返回None;否则,返回MatchObject对象

   MatchObject实例方法

    group():返回被RE匹配的字符串

    start():返回匹配开始的位置

    end():返回匹配结束的位置

    span():返回一个元组包含匹配(开始,结束)的位置

  实际程序中,最常见的做法是将MatchObject保存在一个变量中,然后检查他是否为None

(2)search():扫描字符串,找到这个RE匹配的位置。未匹配,返回None;否则,返回MatchObject对象

(3)findall():找到RE匹配的所有子串,并把他们作为一个列表返回

(4)finditer():找到RE匹配的所有子串,并把他们作为一个迭代器返回

5、模块级函数:match()、search()、sub()、subn()、split()、findall()等

(1)sub()用法举例:

rs=r‘c..t‘
re.sub(rs,‘python‘,‘csvt caat cvvt cccc‘)  #结果‘python python python cccc‘

(2)subn()用法,返回值中比sub()多了一个数据,表示一共替换了多少次,比如

rs=r‘c..t‘
re.sub(rs,‘python‘,‘csvt caat cvvt cccc‘)  #结果(‘python python python cccc‘,3)

(3)split()的用法

s=‘121+334-34*33/44‘
re.split(r‘[\+\-\*/]‘,s)  #结果[‘121‘,‘334‘,‘34‘,‘33‘,‘44‘]

6、编译标志-flags

时间: 2024-10-22 02:21:09

Python学习 之 正则表达式的相关文章

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

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

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

# 本文对正则知识不做详细解释,仅作入门级的正则知识目录. 正则表达式的强大早有耳闻,大一时参加一次选拔考试,题目就是用做个HTML解析器,正则的优势表现得淋漓尽致.题外话不多讲,直接上干货: 1. 元字符: 与之对应的还有反义字符,大部分为小写字母变大写,例如\D表示匹配非数字的字符. 2. 重复(即匹配变长的字符串): 元字符可匹配单一的字符类型,若想匹配长度未知或长度限定的字符串需要在后边加上限定符. 3. 范围与分组: 有时元字符并不能满足匹配字符的需求,这时就需要[]来圈定匹配范围,例

python学习之正则表达式

一.什么是正则? 通过re模块匹配来匹配需要的字符串 二.正则匹配模式 模式      描述 \w        匹配字母数字下划线   \W        匹配非字母数字下划线 \s        匹配空白字符,等价于[\t\n\r\n] \S        匹配任意非空字符 \d        匹配任意数字 \D        匹配任意非数字 \n        匹配一个换行符 \t        匹配一个制表符 ^         匹配字符串开头 $         匹配字符串结尾 .  

python学习之正则表达式练习:编写一个计算器

#!/usr/bin/evn pythonimport redef deal_negative_issue(calc_list):    new_calc_list=[]    #定义一个新的空列表,后面筛选完成后将数据放入新列表中    for index,item in enumerate(calc_list):        if item.strip().endswith("*") or item.strip().endswith("/"):    #挑选出

Python学习之正则表达式初探

正则表达式 正则表达式 (或 regexes ) 是通用的文本模式匹配的方法. Django URLconfs 允许你 使用任意的正则表达式来做强有力的URL映射,不过通常你实际上可能只需要使用很少的一 部分功能. 这里是一些基本的语法. 符号 匹配 . (dot) 任意单一字符 \d            任意一位数字 [A-Z]                        A 到 Z中任意一个字符(大写) [a-z]                         a 到 z中任意一个字符

python学习之正则表达式re模块

正则表达式使用到的是re模块 import re   即可开始调用正则表达式. 常用的正则有如下字符: .   ^  $  *  + ?  {}   []   \   |  () .      匹配任意除\n以外的字符,在DOTALL模式中也能匹配换行符. ^    匹配字符串开头,在多行模式中匹配每一行的开头. [^]  匹配的是不包含某些字符串的内容. $     匹配以某字符串结尾的内容. *      匹配0个或者多个任意字符. +     匹配1个或者多个任意字符. ?    匹配0个

python 学习4 正则表达式

符号 说明 举例 literal 匹配字符串的值 foo re1|re2 匹配正则表达式re1或re2 foo|bar . 匹配任何字符(换行符除外) b.b ^ 匹配字符串的开始 ^Dear $ 匹配字符串的结尾 /bin/*sh$ * 匹配前面出现的正则表达式0次或多次 [A-Za-z0-9]* + 匹配前面出现的正则表达式1次或多次 [a-z]+\.com ? 匹配前面出现的正则表达式0次或多次 goo? {N} 匹配前面出现的正则表达式N次 [0-9]{3} {M,N} 匹配重复出现M-

Python中re(正则表达式)模块函数学习

今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 RE 是否在字符串刚开始的位置匹配 search() 扫描字符串,找到这个 RE 匹配的位置 findall() 找到 RE 匹配的所有子串,并把它们作为一个列表返回 finditer() 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回 match() 函数只检查 RE 是否在字符串开始处匹配

Python学习之路-装饰器&生成器&正则表达式

装饰器 通俗的讲,装饰器就是在不改变源代码基础上,给源代码增加新功能. 不改变函数的源代码.调用方式.返回值等,给函数增加新功能. 经典案例:登录装饰器, def login_decorator(func):     def inner():         if USER_TEMP["status"] == False:             print("\033[31;1m用户未登录,请先登录\033[0m")             login_atm()