python re 模块和基础正则表达式

1.迭代器:对象在其内部实现了iter(),__iter__()方法,可以用next方法实现自我遍历。

二.python正则表达式

1.python通过re模块支持正则表达式

2.查看当前系统有哪些python模块:help(‘modules‘)

help():交互式模式,支持两种方式调用(交互式模式调用,函数方式调用)

例:交互式调用

>>> help()

Welcome to Python 3.5‘s help utility!

If this is your first time using Python, you should definitely check out

the tutorial on the Internet at http://docs.python.org/3.5/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing

Python programs and using Python modules.  To quit this help utility and

return to the interpreter, just type "quit".

To get a list of available modules, keywords, symbols, or topics, type

"modules", "keywords", "symbols", or "topics".  Each module also comes

with a one-line summary of what it does; to list the modules whose name

or summary contain a given string such as "spam", type "modules spam".

help> modules

函数式调用

help(‘modules‘)

3.正则表达式的元字符

. :匹配任意单个字符

[]:指定范围字符  例:[0-9]

[^]:匹配指定范围以外的字符 例:[^0-9]

?  :匹配前一个字符0次或一次

+  :匹配前一个字符一次或无限次

*  :匹配前一个字符0次或无限次

{m}:m次

{m,n}:至少m次至多n次

{m,}:至少m次

{,n}:0到n次

{0,}:0到无限次

边界匹配:

^:匹配字符串开头;在多行模式中匹配每一行的开头

$:匹配字符串结尾;在多行模式中匹配每一行的结尾

\A:仅匹配字符串开头

\Z:仅匹配字符串末尾

\b:匹配\w和\W之间

\B:[^\b]

预定义字符集:

\d:数字[0-9]

\D:非数字

\s:空白字符[<空格>\t\r\n\f\v]

\S:非空白字符

\w:单词字符[A-Za-z0-9]

\W:非单词字符

正则表达式默认为贪婪模式

使用非贪婪模式:后面跟一个?号 例:a*? (*|+|?|{})?

4.调用re的内置方法完成正则表达式分析

5.match(匹配)对象:

match(pattern, string, flags=0)

Try to apply the pattern at the start of the string, returning

a match object, or None if no match was found.

m = re.match(‘a‘,‘abc‘)

所有:

m.end        m.group      m.lastgroup  m.re         m.start

m.endpos     m.groupdict  m.lastindex  m.regs       m.string

m.expand     m.groups     m.pos        m.span

m.group() :打印匹配结果group是一个方法

m.groups(1)  :将所有结果返回到一个元组

m.pos (pos:postion):返回从哪个位置开始搜索

m.endpos:返回从哪个位置结束搜索

m.start():返回指定pattern在作匹配时所截获的子串在原串的起始位置

m.end():返回指定pattern在作匹配时所截获的子串在原串的结束位置

6.search:执行正则表达式搜索并且在搜索结束后返回所匹配到的串,只返回第一次匹配到的结果

search(pattern, string, flags=0)

Scan through string looking for a match to the pattern, returning

a match object, or None if no match was found.

7.findall :匹配所有的对象,返回一个列表

findall(pattern, string, flags=0)

Return a list of all non-overlapping matches in the string.

If one or more capturing groups are present in the pattern, return

a list of groups; this will be a list of tuples if the pattern

has more than one group.

Empty matches are included in the result.

8.finditer(用的不多)

finditer(pattern, string, flags=0)

Return an iterator(迭代器) over all non-overlapping matches in the

string.  For each match, the iterator returns a match object.

Empty matches are included in the result.

9.split

split(pattern, string, maxsplit=0, flags=0)

Split the source string by the occurrences of the pattern,

returning a list containing the resulting substrings.  If

capturing parentheses are used in pattern, then the text of all

groups in the pattern are also returned as part of the resulting

list.  If maxsplit is nonzero, at most maxsplit splits occur,

and the remainder of the string is returned as the final element

of the list.

例:a = re.split(‘\.‘,‘www.baidu.com‘)

10.sub:实现查找替换

sub(pattern, repl, string, count=0, flags=0)

Return the string obtained by replacing the leftmost

non-overlapping occurrences of the pattern in string by the

replacement repl.  repl can be either a string or a callable;

if a string, backslash escapes in it are processed.  If it is

a callable, it‘s passed the match object and must return

a replacement string to be used.

例:In [47]: re.sub(‘baidu‘,‘BAIDU‘,‘www.baidu.com‘)

Out[47]: ‘www.BAIDU.com‘

11.subn :查找替换,并显示替换的次数

例:

In [48]: re.subn(‘baidu‘,‘BAIDU‘,‘www.baidu.com‘)

Out[48]: (‘www.BAIDU.com‘, 1)

flags:

re.I或IGNORECASE:忽略字符大小写

re.M或MULTILINE:多行匹配

re.A或ASCII:仅执行8位的ASCII码字符匹配

re.U或UNICODE:使用\w,\W

re.S (DOTALL): "." matches any character at all, including the newline.  使 . 可以匹配 \n 符。

re.X (VERBOSE): Ignore whitespace and comments for nicer looking RE‘s. 允许在正则表达式规则中加入注释,但默认会去掉所有空格。

12.去除优先捕获:

xxx(?:)xxx

?:  :分组时去除优先捕获

?P<>   :

(?P<name>...)

Similar to regular parentheses, but the substring matched by the group is accessible via the symbolic group name name. Group names must be valid Python identifiers, and each group name must be defined only once within a regular expression. A symbolic group is also a numbered group, just as if the group were not named.

Named groups can be referenced in three contexts. If the pattern is (?P<quote>[‘"]).*?(?P=quote) (i.e. matching a string quoted with either single or double quotes):

Context of reference to group “quote” Ways to reference it

in the same pattern itself

(?P=quote) (as shown)

\1

when processing match object m

m.group(‘quote‘)

m.end(‘quote‘) (etc.)

in a string passed to the repl argument of re.sub()

\g<quote>

\g<1>

\1

时间: 2024-10-18 08:56:06

python re 模块和基础正则表达式的相关文章

Python基础----正则表达式和re模块

正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. 字符匹配(普通字符,元字符): 1 普通字符(完全匹配):大多数字符和字母都会和自身匹配 1 >>> import re 2 >>> res='hello world good morning' 3 >>> re.findall(

python 全栈 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)

一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据流中接收) 1.函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error mes

python ==》 模块和正则表达式

今日内容: re 模块 collentions 模块 正则表达式 1.re 模块: re模块下常用的方法: 1 import re 2 #1.re.findall() 3 ret1 = re.findall('a','eva egon yuan') #以 'a' 为眼,找所有. 并且 以列表返回. 4 print(ret1) 5 6 #2.re.search() 7 ret2 = re.search('a','eva egon yuan').group() #从字符串里匹配 'a' 8 prin

python常用模块(1):collections模块和re模块(正则表达式详解)

从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来说我们应该先解释模块概念性东西再来学习具体的模块使用.可是直接解释可能反而不好理解,模块的使用非常方便,所以我们采用先介绍使用常用模块过两天再具体进行模块概念的讲解. 预习: 实现能计算类似 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998

正则表达式 --python re模块

正则表达式 1 程序员 --- 基本----都需要使用 2 数据提取====正则 3 爬虫基础 正则表达式 本身和python无关,是所有语言通用的----一种匹配字符串内容的 一种规则 1 元字符 字符集 [0123456789] [0-9]---只能从大到小 [a-zA-Z]---中间其他字符 一个字符集只能匹配一个字符 . 匹配所有 ======= 除了换行符'\n' \w (word) 数字 字母 下划线 \W \s (space) \S \d (digit) \D ^ 开头 在字符集里

Python re模块 正则表达式

1 简介 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的.

Python re模块与正则表达式详解

Python 中使用re模块处理正则表达式,正则表达式主要用来处理文本中的查找,匹配,替换,分割等问题:我们先来看一个问题,切入正则表达式. 问题: 匹配字符串,最少以3个数字开头.使用Python代码如何实现?检查条件: 1>字符串长度判断:2>判断前三个字符是否是数字: 这样实现起来有点啰嗦,我们可以使用正则表达式,先来看正则表达式基本语法. 1 正则表达式基本语法 . 匹配任意字符(不包括换行符) ^ 匹配开始位置,多行模式下匹配每一行的开始 $ 匹配结束位置,多行模式下匹配每一行的结束

Python常用模块——正则表达式re模块

Python常用模块--正则表达式re模块 引子 请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 13813234424 马纤羽 深圳 173 50 13744234523 乔亦菲 广州 172 52 15823423525 罗梦竹 北京 175 49 18623423421 刘诺涵 北京 170 48 18623423765 岳妮妮 深圳 177 54 18835324553 贺婉萱 深圳 174 5

Python常用模块及正则表达式知识点,你需要了解的全在这了

近年来随着人工智能的火热,也让Python语言逐渐被更多人所接受,一个原因是Python语法比较简洁,几十行代码就能实现一个超级复杂的功能(比如今年过年时,有同学用Python生成对联):另外一个原因是Python强大的类库支撑,比如:NASA(美国国家航空航天局)的很多数据处理库都是用Python实现的,在2018年,NASA甚至还拍了个宣传片,用sublime Text+Python实现了登月计划,是不是很Niubility. 在平时工作中的很多场景你都可能会用到Python,比如:写单元测