正则表达式

1  简介

  正则表达式  是一些有字符和特殊符号组成的字符串,他描述了模式的重复或者表述多个字符,于是正则表达式能够按照魔种模式匹配一系列有相似特征的字符。

  在Python开发语言中re模块来支持正则表达式。

2  常见的正则表达式符号

  常见的正则表达式符号如下表所示:

表示方法 描述 示例
literal 匹配文本字符串literal foo
re1|re2 匹配表达式re1或者re2 foo|bar
. 匹配任何字符(除\n之外) b.b
^ 匹配字符串起始部分 ^Dear
$ 匹配字符串种植部分 /bin/*sh$
* 匹配0次或者多次前面出现的正则表达式 [A-Za-z0-9]*
+ 匹配1次或者多次前面出现的正则表达式 [a-z]+\.com
匹配0次或者1次前面出现的正则表达式 goo?
{N} 匹配N次前面出现的正则表达式 [0-9]{5-9}
{M,N} 匹配M-N次前面出现的正则表达式 [0-9]{5,9}
[...] 匹配来自字符集的任意字符 [aeiou]
[..x-y..] 匹配x-y范围中的任意一字符 [0-9],[A-Za-z]
[^...] 不匹配此字符集中出现的任何一个字符,包括魔衣范围的字符 [^aeiou]
(*|+|?|{})? 匹配上面明矾出现/重复出现的非贪婪版本(*、+、?、{}) .*?[a-z]
(...) 匹配封闭的正则表达式,然后另存为子组 ([0-9]{2})?,f(oo|u)bar
\d 匹配任何十进制数字 data\d+.txt
\w 匹配任何字母数字字符 [A-Za-z]\w+
\s 匹配任何空字符 of\sthe
\b 匹配任何单词边界 \bThe\b
     

3 Python的正则表达式模块

   python使用re模块来支持正则表达式,re为标准的库模块,第三方模块regex提供了与标准库re模块兼容的 API 接口,同时,还提供了更多功能和更全面的 Unicode 支持。本篇文章主要介绍re标准库的使用,re中文文档

3.1 常见的正则表达式属性

函数方法 说明
complie(pattern,flags=0) 使用任何可选的标记来编译正则表达式,然后返回一个正则表达式对象
match(pattern,string,flags=0) 使用带有可选的标记的正则表达式的模式来匹配字符串,如果匹配成功,就返回匹配对象;失败则返回None
search(pattern,string,flags=0) 使用可选标记搜索字符串中第一次出现的正则表达式模式。匹配成功则返回匹配对象,匹配失败返回None
findall(pattern,string[,flags]) 查找字符串中的所有出现的正则表达式模式,并返回一个匹配列表
finditer(pattern,string[,flags]) 与findall()函数相同,但返回的不是一个列表,而是一个迭代器,对于每一次匹配,迭代器都返回一个匹配对象
split(pattern,string,max=0) 根据正则表达式模式分隔符,split函数将字符串分割为列表,憨厚返回成功匹配的列表,分隔最大操作max次
sub(pattern,repl,sting,count=0) 使用repl替换所有正则表达式模式在字符串中出现的位置,除非定义count,否则就将替换所有出现的位置
purge() 清楚隐式编译的正则表达式模式
常用的匹配方法
group(num=0) 返回整个匹配对象,或者编号为num的特定子组
groups(default=None) 返回一个包含匹配子组的元组,匹配失败返回空

3.2 示例

  

复制代码
 1 #导入正则表达式模块
 2 import re
 3 #demo1 匹配foo并输出结果,match用于从字符串其实部分匹配
 4 m = re.match('foo','foo123')
 5 res = m.group()
 6 print('demo1.1:',res)
 7 #匹配失败m为空,当m为None时无group属性
 8 m = re.match('foo','bar')
 9 if m is not None:m.group()
10 print('demo1.2:',m)
11 
12 #demo2 匹配失败返回none,search用于从左往右搜索匹配成功返回结果否则
13 m = re.search('foo1','123foo123')
14 if m is not None:
15     res1 = m.group()
16     print('demo2:',res1)
17 
18 data = '1234567890asdfghjklfoogreenred'
19 m = re.search('green',data)
20 if m is not None : m.group()
21 print('demo2:',m.group())
22 
23 #demo3 匹配多个字符串,如果第一个字符串匹配成功则返回匹配结果,否则使用下一个字符串进行匹配
24 bt1 = 'green1|fot|asd'
25 m = re.search(bt1,data)
26 if m is not None : m.group()
27 print('demo3:',m.group())
28 
29 #demo4 匹配任意一个字符
30 
31 m = re.search('.',data)
32 n = m.group()
33 print('demo4:',n)
34 #demo5
35 m = re.search('.*',data)
36 n = m.group()
37 print('demo5:',n)
38 #demo6 匹配电子邮件
39 userInfo = 'userNmae:Jhon snow;e-Mail:Jhon_snow@qq.com'
40 regular = '[\w\.-]+@[\w\.-]+(\.[\w]+)+'
41 m = re.search(regular,userInfo)
42 print('demo6:',m.group())
复制代码

 

posted @   Captain_Mr  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示