我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python re模块详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python re模块详解

今天学习测试了一下Python中的正则表达式的模块用法。初学 Python ,对 Python 的文字处理能力有很深的印象,除了 str 对象自带的一些方法外,就是正则表达式这个强大的模块了。但是对于初学者来说,要用好这个功能还是有点难度,由于我记性不好,很容易就忘事,所以还是写下来比较好一些,同时也可以加深印象,整理思路。
由于我是初学,所以肯定会有些错误,还望高手不吝赐教,指出我的错误。

一、Python中转义字符
     正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表示正则表达式中的" \ ",因为正则表达式中如果要匹配" \ ",需要用\来转义,变成" \\ ",而Python语法中又需要对字符串中每一个\进行转义,所以就变成了" \\\\ "。
上面的写法是不是觉得很麻烦,为了使正则表达式具有更好的可读性,Python特别设计了原始字符串(raw string),需要提醒你的是,在写文件路径的时候就不要使用raw string了,这里存在陷阱。raw string就是用'r'作为字符串的前缀,如 r"\n":表示两个字符"\"和"n",而不是换行符了。Python中写正则表达式时推荐使用这种形式。

二、正则表达式元字符说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.    匹配除换行符以外的任意字符
^    匹配字符串的开始
$    匹配字符串的结束
[]   用来匹配一个指定的字符类别
?   对于前一个字符字符重复0次到1
*对于前一个字符重复0次到无穷次
{}   对于前一个字符重复m次
{m,n} 对前一个字符重复为m到n次
\d   匹配数字,相当于[0-9]
\D   匹配任何非数字字符,相当于[^0-9]
\s   匹配任意的空白符,相当于[ fv]
\S   匹配任何非空白字符,相当于[^ fv]
\w   匹配任何字母数字字符,相当于[a-zA-Z0-9_]
\W   匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]
\b   匹配单词的开始或结束

三、导入正则表达式模块
3.1、导入正则表达式模块

1
>>> importre

3.2、查看正则表达式模块方法

1
2
3
>>> dir(re)
['DEBUG', 'DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE', 'S', 'Scanner', 'T','TEMPLATE', 'U', 'UNICODE', 'VERBOSE', 'X', '_MAXCACHE', '__all__', '__builtins__', '__doc__','__file__', '__name__', '__package__', '__version__', '_alphanum', '_cache', '_cache_repl','_compile', '_compile_repl', '_expand', '_pattern_type', '_pickle', '_subx', 'compile','copy_reg', 'error', 'escape', 'findall', 'finditer', 'match', 'purge', 'search', 'split','sre_compile', 'sre_parse', 'sub', 'subn', 'sys', 'template']
>>>

四、常用的正则表达式处理函数
4.1、re.search
    re.search 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回,如果字符串没有匹配,则返回None。
   提示:当我们不会用模块方法的时候用help

1
2
>>> help(re.search)
search(pattern, string, flags=0)

   第一个参数:规则
   第二个参数:表示要匹配的字符串
   第三个参数:标致位,用于控制正则表达式的匹配方式
   实例:下面的例子kuangl

1
2
3
4
5
6
7
8
>>> name="Hello,My name is kuangl,nice to meet you..."
>>> k=re.search(r'k(uan)gl',name)
>>> ifk:
...     printk.group(0),k.group(1)
... else:
...     print"Sorry,not search!"
...
kuangl uan

4.2、re.match
   re.match 尝试从字符串的开始匹配一个模式,也等于说是匹配第一个单词

1
2
>>> help(re.match)
match(pattern, string, flags=0)

   第一个参数:规则
   第二个参数:表示要匹配的字符串
   第三个参数:标致位,用于控制正则表达式的匹配方式
   实例:下面的例子匹配Hello单词

1
2
3
4
5
6
7
8
9
10
>>> name="Hello,My name is kuangl,nice to meet you..."
>>> k=re.match(r"(\H....)",name)
>>> ifk:
...      printk.group(0),'\n',k.group(1)
... else:
...     print"Sorry,not match!"
...
Hello
Hello
>>>

    re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

4.3、re.findall
   re.findall 在目标字符串查找符合规则的字符串

1
2
>>> help(re.findall)
findall(pattern, string, flags=0)

  第一个参数:规则
  第二个参数:目标字符串
  但三个参数:后面还可以跟一个规则选择项
  返回的结果是一个列表,建中存放的是符合规则的字符串,如果没有符合规则的字符串呗找到,就会返回一个空值。
  实例:查找邮件账号

1
2
3
>>> mail='<user01@mail.com> <user02@mail.com> user04@mail.com'#第3个故意没有尖括号
>>> re.findall(r'(\w+@m....[a-z]{3})',mail)
['user01@mail.com', 'user02@mail.com', 'user04@mail.com']

4.4、re.sub
  re.sub 用于替换字符串的匹配项

1
2
>>> help(re.sub)
sub(pattern, repl, string, count=0)

  第一个参数:规则
  第二个参数:替换后的字符串
  第三个参数:字符串
  第四个参数:替换个数。默认为0,表示每个匹配项都替换
  实例:将空白处替换成-

1
2
3
4
5
6
>>> test="Hi, nice to meet you where are you from?"
>>> re.sub(r'\s','-',test)
'Hi,-nice-to-meet-you-where-are-you-from?'
>>> re.sub(r'\s','-',test,5)                      #替换至第5个
'Hi,-nice-to-meet-you-where are you from?'
>>>

4.5、re.split
  re.split 用于来分割字符串

1
2
>>> help(re.split)
split(pattern, string, maxsplit=0)

  第一个参数:规则
  第二个参数:字符串
  第三个参数:最大分割字符串,默认为0,表示每个匹配项都分割
  实例:分割所有的字符串

1
2
3
4
5
6
>>> test="Hi, nice to meet you where are you from?"
>>> re.split(r"\s+",test)
['Hi,', 'nice', 'to', 'meet', 'you', 'where', 'are', 'you', 'from?']
>>> re.split(r"\s+",test,3)                  #分割前三个
['Hi,', 'nice', 'to', 'meet you where are you from?']
>>>

4.6、re.compile
  re.compile 可以把正则表达式编译成一个正则对象

1
2
>>> help(re.compile)
compile(pattern, flags=0)

  第一个参数:规则
  第二个参数:标志位
  实例:

1
2
3
4
5
6
7
8
9
>>> test="Hi, nice to meet you where are you from?"
>>> k=re.compile(r'\w*o\w*') #匹配带o的字符串
>>> dir(k)
['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner', 'search', 'split','sub', 'subn']
>>> printk.findall(test)     #显示所有包涵o的字符串
['to', 'you', 'you', 'from']
>>> printk.sub(lambdam: '['+m.group(0) +']',test)  # 将字符串中含有o的单词用[]括起来
Hi, nice [to] meet [you] where are [you] [from]?
>>>

五、用urllib2、re、os 模块下载文件的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python
importurllib2
importre
importos
URL='http://p_w_picpath.baidu.com/channel/wallpaper'
read=urllib2.urlopen(URL).read()
pat =re.compile(r'class="lazy" data-src="http://.+?.js">')
urls=re.findall(pat,read)
fori inurls:
url=i.replace('class="lazy" data-src="','').replace('">','')
try:
iread=urllib2.urlopen(url).read()
name=os.path.basename(url)
with open(name,'wb') as jsname:
jsname.write(iread)
except:
printurl,"url error"


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python re模块详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python re模块详解

今天学习测试了一下Python中的正则表达式的模块用法。初学 Python ,对 Python 的文字处理能力有很深的印象,除了 str 对象自带的一些方法外,就是正则表达式这个强大的模块了。但是对于初学者来说,要用好这个功能还是有点难度,
2023-01-31

python re模块

正则表达式(可以称为REs,regex,regex pattens)是一个小巧的,高度专业化的编程语言,它内嵌于python开发语言中,可通过re模块使用。正则表达式的pattern可以被编译成一系列的字节码,然后用C编写的引擎执行。常用正
2023-01-30

python模块之re正则表达式详解

一、简单介绍 正则表达式是一种小型的、高度专业化的编程语言,并不是python中特有的,是许多编程语言中基础而又重要的一部分。在python中,主要通过re模块来实现。 正则表达式模式被编译成一系列的字节码,然后由用c编写的匹配引擎执行。那
2022-06-04

python之re模块

python 中使用正则表达式需要引入re模块,用来匹配处理字符串 如:import re #第一步,要引入re模块a = re.findall("匹配规则", "要匹配的字符串") #第二步,调用模块函数以列表形式返回匹配到的字符串1、普
2023-01-30

python中re模块的详细介绍

本篇内容介绍了“python中re模块的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正则表达式的元字符有. ^ $ * ? { [
2023-06-04

python学习-re模块

Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法。1.re的简介    使用python
2023-01-31

详细解析python正则表达式re模块

本篇文章给大家带来了关于python的相关知识,其中主要介绍了关于正则表达式中re模块的相关问题,下面一起来看一下,希望对大家有帮助。在Python中需要通过正则表达式对字符串进⾏匹配的时候,可以使⽤⼀个python自带的模块,名字为re。正则表达式的大致匹配过程是: 1.依次拿出表达式和文本中的字符比较, 2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。 3.如果表达式中
2022-06-14

re模块

1.匹配单个字符字符功能.匹配任意1个字符(除了\n)[ ]匹配[ ]中列举的字符\d匹配数字,即0-9\D匹配非数字,即不是数字\s匹配空白,即 空格,tab键\S匹配非空白\w匹配单词字符,即a-z、A-Z、0-9、_\W匹配非单词字符
2023-01-30

Python中re模块基本用法解析

基于Python的正则表达式, 使用re模块:1. match()方法, 从字符串头部开始匹配import recontent = 'The 123456 is my one phone number.'print(len(content)
2023-01-31

Python的Re模块怎么用

这篇文章主要介绍Python的Re模块怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、基础语法总结1.1、匹配单个字符a . d D w W s S [...] [^...]匹配单个字符(.)规则:匹配除换行
2023-06-17

python re详解

正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系。^ 如果放在字符串的开头,则表示取非的意思。[^5]表
2023-01-31

python re模块常见函数

re.match()函数如果想要从源字符串的起始位置匹配一个模式,我们可以使用re.match()函数。re.match()函数的使用格式是:re.match(pattern, string, flag)re.search()函数我们还可以
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录