python 教程 第十六章、 正则表达式

简介: 第十六章、 正则表达式 1)    匹配多个表达式 记号  re1|re2 说明  匹配正则表达式re1或re2 举例  foo|bar  匹配  foo, bar 记号  {N} 说明  匹配前面出现的正则表达式N 举例  [0-9]{3}  匹配  2)    匹配单个/多个/范围内字符 记号  .

第十六章、 正则表达式
1)    匹配多个表达式
记号  re1|re2
说明  匹配正则表达式re1或re2
举例  foo|bar  匹配  foo, bar
记号  {N}
说明  匹配前面出现的正则表达式N
举例  [0-9]{3}  匹配 

2)    匹配单个/多个/范围内字符
记号  .
说明  匹配任何字符(换行符除外)
举例  b.b  匹配  b和b中间有一个任意字符bab, bcb, bbb
举例  .. (匹配任何两个字符)  匹配  xx, ab
记号  […]
说明  匹配字符组里面出现的任意一个字符
举例  b[aeiou]t  匹配3字符串 bat,bit,but,bet
举例  [ab][23][xy] 匹配3字符串  a2x,a3y,b2x,b3x
记号  [..x-y..]
说明  匹配从字符x到y中的任意一个字符
举例  [0-9] 匹配任意一个十进制数字,
[A-Za-z] 匹配任意一个字母

3)    匹配开头结尾边界
记号  ^
说明  匹配字符串的开始
举例  ^Dear  匹配  任何以Dear开始的字符串
记号  $
说明  匹配字符串的结尾
举例  /bin/*sh$  匹配  任何以/bin/*sh结束的字符串

4)    否定范围
记号  [^…]
说明  不匹配此字符集中出现的任何一个字符,包括某一范围的字符
举例  [^aeiou]匹配
[^A-Za-z0-9]  匹配 

5)    多次出现/重复匹配
记号  *
说明  匹配前面出现的正则表达式零次或多次
举例  [A-Za-z0-9]*  匹配  a
记号  +
说明  匹配前面出现的正则表达式一次或多次
举例  [a-z]+\.com  匹配  qq.com, baidu.com
记号  ?
说明  匹配前面出现的正则表达式零次或一次
举例  goo?  匹配  go,goo
0?[1-9]匹配1到9的任意数字,前面可能有个0
记号  {M,N}
说明  匹配重复出现M次到N次的正则表达式
举例  [0-9]{5,10}  匹配5到9位数字,如QQ号码
[KQRBNP][a-h][1-8]-[a-h][1-8]国际象棋合法移动
记号  (*|+|?{})?
说明  用于上面出现的任何”非贪婪”.版本重复匹配次数符号
举例  .*?[a-z]  匹配 

6)    特殊字符
记号  \d
说明  匹配任何数字,和[0-9]一样(\D为\d的反义,任何非数字符)
举例  data\d+.txt  匹配data后面一个或多个数字.txt
\d{3}-\d(3)-d{4} 匹配美国电话号码,如800-555-1212
记号  \w
说明  匹配任何数字字母字符,和[A-Za-z0-9_]相同,(\W为\w的反义)
举例  [A-Za-z_]\w+  匹配任意字母再加任意一个字母或数字
\w+@\w+\.com 匹配一个电子邮件,如xxx@yyy.com
记号  \s
说明  匹配任何空白符,和[\n\t\r\v\f]相同(\S是\s的反义)
举例  of\sthe  匹配 of the
记号  \b
说明  匹配单词边界(\B是\b的反义)
举例  \bthe\b  仅匹配单词the
/bthe 任何以the开始的字符串
记号  \nn
说明  匹配已保存的子组(参考(…))
举例  price:\16  匹配 
记号  \c   
说明  逐一匹配特殊字符c(即取消特殊含义,按字面匹配)
举例  \.,\\,\*  匹配 
记号  \A(\Z)
说明  匹配字符串的起始(结束)
举例  \ADear 以Dear开始的字符串

7)    用圆括号组建组
记号  (…)
说明  匹配封闭括号中正则表达式(RE),并保存为子组
举例  ([0-9]{3})?, f(oo|u)bar  匹配 
\d+(\.\d*)? 匹配浮点型数字,任意十进制数字加一个可选小数部分(包括一个小数点,零个或多个十进制数字),如0.004,75等.

8)    其它
记号  literal
说明  匹配字符串的值
举例  foo  匹配  foo

import re;
patt = '(\w+)-(\d+)'
strg = 'abc-123'
m = re.match(patt, strg)
print m.group() #abc-123 //所有匹配部分
print m.group(1) #abc //匹配的子组1
print m.group(2) #123 //匹配的子组2
print m.groups() #('abc', '123') //所有匹配子组 

findall找个每个匹配的部分

>>> re.findall('car', 'carry the car') #['car', 'car']

sub搜索替换

>>> re.sub('X', 'Mr.Smith', 'Dear X') #'Dear Mr.Smith'

subn搜索替换并返回次数

>>> re.subn('X', 'Mr.Smith', 'Dear X') #('Dear Mr.Smith', 1)

split分割字符串

>>> re.split(':', 'str1:str2:str3') #['str1', 'str2', 'str3'] 

贪婪匹配

data = ':1234567-8-9'
print re.search('\d+-\d+-\d+', data).group() #1234567-8-9
print re.match('.+\d+-\d+-\d+', data).group() #:1234567-8-9
print re.match('.+(\d+-\d+-\d+)', data).group(1) #7-8-9
print re.match('.+?(\d+-\d+-\d+)', data).group(1) #1234567-8-9 
目录
相关文章
|
1月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
73 8
|
1月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
123 7
|
1月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
51 4
|
1月前
|
数据可视化 Python
Seaborn 教程
Seaborn 教程
51 5
|
2月前
|
Python
SciPy 教程 之 Scipy 显著性检验 9
SciPy 教程之 Scipy 显著性检验第9部分,介绍了显著性检验的基本概念、作用及原理,通过样本信息判断假设是否成立。着重讲解了使用scipy.stats模块进行显著性检验的方法,包括正态性检验中的偏度和峰度计算,以及如何利用normaltest()函数评估数据是否符合正态分布。示例代码展示了如何计算一组随机数的偏度和峰度。
35 1
|
2月前
|
BI Python
SciPy 教程 之 Scipy 显著性检验 8
本教程介绍SciPy中显著性检验的应用,包括如何利用scipy.stats模块进行显著性检验,以判断样本与总体假设间的差异是否显著。通过示例代码展示了如何使用describe()函数获取数组的统计描述信息,如观测次数、最小最大值、均值、方差等。
39 1
|
2月前
|
数据采集 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析的基础教程
【10月更文挑战第41天】本文旨在为初学者提供一个关于如何使用Python语言进行数据分析的入门指南。我们将通过实际案例,了解数据处理的基本步骤,包括数据的导入、清洗、处理、分析和可视化。文章将用浅显易懂的语言,带领读者一步步掌握数据分析师的基本功,并在文末附上完整的代码示例供参考和实践。
|
2月前
|
Python
SciPy 教程 之 Scipy 显著性检验 6
显著性检验是统计学中用于判断样本与总体假设间是否存在显著差异的方法。SciPy的scipy.stats模块提供了执行显著性检验的工具,如T检验,用于比较两组数据的均值是否来自同一分布。通过ttest_ind()函数,可以获取两样本的t统计量和p值,进而判断差异是否显著。示例代码展示了如何使用该函数进行T检验并输出结果。
38 1
|
2月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
78 5
|
2月前
|
Python
SciPy 教程 之 Scipy 显著性检验 3
本教程介绍Scipy显著性检验,包括其基本概念、原理及应用。显著性检验用于判断样本与总体假设间的差异是否显著,是统计学中的重要工具。Scipy通过`scipy.stats`模块提供了相关功能,支持双边检验等方法。
46 1