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-N次的正则表达式 [0-9]{5,9}
[...] 匹配字符组里出现的任意一个字符 [aeiou]
[..x-y..] 匹配从字符x到y中的任意一个字符 [0-9],[A-Za-z]
[^...] 不匹配此字符集中出现的任何一个字符,
包括某一范围的字符
[^A-Za-z0-9_]
(*|+|?|{}) 用于上面出现的任何"非贪婪"版本
重复匹配次数符号(*,+,?,{})
.*?[a-z]
(...) 匹配封闭括号中正则表达式(RE),并保持为子组 ([0-9]{3})?,f(oo|u)bar
     
     
特殊符号    
\d 匹配任何数字,和[0-9]
(\D 是\d 的反义:任何非数符号)
data\d+.txt
\w 匹配任何数字字母字符
(\W 是\w 的反义)
[A-Za-z_]\w+
\s 匹配任何空白符,和[\n\t\r\v\f]
(\S 是\s 的反义)
of\sthe
\b 匹配单词边界
(\B 是\b 的反义)
\bThe\b
\nn 匹配已保存的子组 price: \16
\c 逐一匹配特殊字符c \.,\\,\*
\A(\Z) 匹配字符串的起始(结束) \ADear
     
     
     
常见的正则表达式函数与方法    
compile(pattern,flags=0) 对正则表达式pattern进行编译,并返回一个regex对象  
match(pattern,string,flags=0) 用正则表达式pattern匹配字符串string,
匹配成功返回匹配对象,否则返回None
 
search(pattern,string,flags=0) 用正则表达式pattern匹配字符串string的第一次出现,
匹配成功返回匹配对象,否则返回None
 
findall(pattern,string[,flags]) 在字符串string中查找正则表达式模式pattern的所有(非重复)出现,
返回一个匹配对象的列表
 
finditer(pattern,string[,flags]) 搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器  
split(pattern,string,max=0) 将string 按pattern模式分割后返回列表。
max用于指定最大分割次数,不指定将全部分割。
 
sub(pattern,rep1,string,max=0) 使用repl替换string中每一个匹配pattern的子串后返回替换后的字符串。  
group(num=0) 返回全部匹配对象  
groups() 返回一个包含全部匹配的子元组的元组  

关于贪婪匹配和非贪婪匹配举例:

 1 import re
 2
 3 data=‘Thu Nov 29 01:14:11 2001::[email protected]::6777874277-5-8‘
 4
 5
 6 #非贪婪匹配
 7 patt4=‘.+?(\d+-\d+-\d+)‘
 8 m=re.match(patt4, data)
 9 print(m.group(1))
10
11 #贪婪匹配
12
13 patt5=‘.+(\d+-\d+-\d+)‘
14 m=re.match(patt5, data)
15 print(m.group(1))

输出结果:

6777874277-5-8
7-5-8
时间: 2024-10-30 11:46:15

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

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

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

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' 加上^表示取反  

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中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()