Python讲解,python 百度文库
Re模块包含成对的正则表达式。本章将介绍re模块的主要特性和正则表达式。
什么是正则表达式?
正则表达式是可以匹配文本片段的模式。最简单的正则表达式就是一个普通的字符串,可以匹配自身。换句话说,正则表达式“python”可以匹配字符串“python”。您可以使用这种匹配行为来搜索文本中的模式,并使用计算出的值来并发处理特定的模式,或者对文本进行分段。
* *通配符
正则表达式可以匹配多个字符串,您可以使用一些特殊字符来创建这样的模式。比如一个点(。)可以匹配任何字符。我们用问号(?)匹配任何字符,效果都一样。那么这样的符号就叫做通配符。
* *转义特殊字符
通过上面的方法,如果要匹配“python.org”,可以直接用“python.org”吗?这个是可以的,但是也会匹配“pythonzorg”,不是预期的结果。
好吧!我们需要对它进行转义,可以在它前面加一个斜杠。因此,本例中可以使用“python \ \ org”,这样就只有“python \ \”了。org”将被匹配。
* *字符集
我们可以使用方括号([])将字符串括起来以创建字符集。您可以使用范围,如“[A-Z]”来匹配从A到Z的任何字符,也可以逐个组合范围,如“[A-ZA-Z0-9]”来匹配任何大小写字母和数字。
反转字符集,可以使用开头的字符。例如,[ABC]可以匹配除A、B和c之外的任何字符。
* *选择器
有时,如果您只想匹配字符串 python 和 perl ,您可以使用选项的特殊字符:管道符号()。因此,需要的模式可以写成‘python perl’。
* *子模式
然而,有时您不需要对整个模式使用选择器,只需要对模式的一部分使用选择器。这时,可以用括号将所需的部分或子模式括起来。先例可以写成‘p(ython erl)’
* *可选
在子模式后添加一个问号,它就变成可选的了。它可能出现在匹配字符串中,但不是必需的。
r(heep://)?(www\。)?python\。组织
只能匹配以下字符:
http://www.python.org
http://python.org
www.python.org
python.org
* *重复子模式
(模式)*:允许模式重复0次或更多次。
(模式):允许模式重复一次或多次。
(pattern){m,n}:模式允许重复m~n次。
例如:
Rw*\。python\。“org”匹配“www.python.org”、“python.org”和“wwwww.python.org”
Rw \。python\。“org”匹配“w . python . org”;但无法匹配“. python.org”
Rw{3,4}\。python\。“org”只能匹配“www.python.org”和“wwww.python.org”
Re模块内容
re模块中的一些重要函数:
Re.compile将正则表达式转换为模式对象,可以实现更高效的匹配。
Re.search将在给定字符串中查找与给定正则表达式匹配的第一个子字符串。如果找到MatchObject(真值),则该函数返回,否则返回None(假值)。由于返回值的性质,此函数可用于条件语句中:
ifre.serch(pat,string):
printfoundit!
Re.math将匹配给定字符串开头的正则表达式。因此,re.math (p , python )返回true,而re.math (p , www.python )返回false。
Re.split将根据模式的匹配来拆分字符串。
进口re
some_text=alpha,beta,gamma delta
重新拆分([,],some_text)
[alpha , beta , gamma delta ]
Re.findall以列表形式返回给定模式的所有匹配。例如,要查找字符串中的所有单词,可以按如下方式进行:
进口re
帕特=[a-zA-Z]
text= 嗯.呃-你确定吗?他说,听起来不太自信。
re.findall(pat,text)
[嗯,呃,是,你,肯定,他,说,听起来,不安全]
re.sub的功能是用给定的替换内容替换匹配模式的子串(最左边和重叠的子串)。
进口re
pat=“{ name }”
text=亲爱的{name} .
回复(帕特,“甘比先生”,文本)
亲爱的甘比先生.
Re.escape函数,一个应用程序函数,可以转义字符串中可能被解释为常规运算符的所有字符。
如果字符串很长并且包含许多特殊字符,并且您不想输入大量反斜杠,您可以使用此函数:
re.escape(www.python.org )
www\\。python\\。组织
re . escape(‘但是哪里有歧义?’)
但是\\ where\\ is\\ the\\ ambiguity\\?
匹配对象和组
简单来说,一个组就是一个放在括号里的子模块,一个组的序号取决于它左边括号的个数。组0是整个模块,所以在下面的模式中:
有(是一个(小)(库珀))谁(生活)
群组包括:
0那里是weecooperwholivedinFyfe
1wasaweecooper
2周
3库珀
4生活费
重新匹配对象的重要方法
这里有一个例子:
进口re
m=re.match(rwww\。(.*)\.“{3}”、“www.python.org”)
m.group()
www.python.org
m.group(0)
www.python.org
m.group(1)
python
m.start(1)
四
m.end(1)
10
m.span(1)
(4, 10)
Group方法返回匹配模式中给定组的字符串。如果没有组号,默认值为0;如上:m . group()==m . group(0);如果给定了组号,则返回单个字符串。
start方法返回给定匹配集的起始索引,
end方法返回给定匹配集的结束索引加1;
以span tuple (start,end)的形式返回组的开始和结束位置的索引。
-
正则表达式应该是不容易理解的知识点;python枯燥的基础终于讲完了。虽然学习不扎实,但大体有印象;下面会很有意思,读文件,写图形窗口,连接数据库,web编程。
否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。