数据蛙数据分析每周作业

正则表达式

2019-03-10  本文已影响0人  怀柔小龙虾

核心步骤

compile 函数

匹配函数方法

re.match()

pattern:匹配的正则表达式
string :要匹配的字符串
flags :标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等

注:match() 总是从字符串开始去匹配,如果你想查找字符串任意部分的模式出现位置,使用 findall() 方法去代替

re.search()

re.sub()

如果除了替换后的结果外,你还想知道有多少替换发生了,可以使用 re.subn()来代替。

re.dindall()

re.finditer()

re.split()

正则表达式模式

详情可见表

注意要点:

正则表达式修饰符 - 可选标志

现存疑问点:

问题:这里re.split(r'[;,\s]\s*',line)如果不加\s*,结果则是['asdf', 'fjdk', '', 'afed', '', 'fjek', 'asdf', '', 'foo']
所以,加了\s*的意义造成这样好处的原理是什么呢?

>>>from fnmatch import fnmatch,fnmatchcase
>>>names = ['Dat1.csv', 'Dat2.csv', 'config.ini', 'foo.py']
>>>[name for name in names if fnmatch(name, 'Dat*.csv')]
['Dat1.csv', 'Dat2.csv']

问题:这里的fnmatch(name, 'Dat*.csv')]中的'Dat*.csv'为何是用*才可以实现这样的匹配呢,用+号却不行

>>>datepat = re.compile(r'(\d+)/(\d+)/(\d+)$')
>>>m1 = datepat.match('11/27/2012abcdef')
>>>m2 = datepat.match('11/27/2012')
>>>m2.group()
'11/27/2012'

问题:为何m1.group()就会报错呢?而m2.group()却正常?

`re.compile(r'/\*((?:.|\n)*?)\*/')`理解不来啊
>>>s = ' hello             world \n'
>>>import re
>>>re.sub('\s+',' ',s)
' hello world '

问题:这里的匹配串用\s+\s*,甚至是\s?都是不同的,如何理解?

上一篇 下一篇

猜你喜欢

热点阅读