当处理较为复杂的字符串问题时,与其他语言类似,Python提供了非常强大的re模块(regular expression)。
re模块主要的作用就是 根据pattern(也就是你给的那个规则),在一个字符串string中 寻找满足这个pattern的子字符串,然后返回的过程。当然re模块 这里首先compile了 pattern,在给定的模式中(比如 dotall )中,提交给计算中心(match machine),然后。。。举个例子:import repp=re.compile(r'[abc][def][ghi]',re.DOTALL)dd=pp.match("aeidfg aeidfg")dd.group()将返回 'aei' 这个字符串
greedy贪婪模式假设pattern为'a[bcd]*b',而string为"abcbd"那么首先定位到a,然后[bcd]*将会match到最后,然后match b 失败后,会退回第二步match,然后少match一个,。。。最后结果将为 abcb除了*,还有+。此外,'?'表示 0 或者1次a/{1,3}b 将会匹配 a/b, a//b, 和 a///b。这里注意 转义的斜线是"\"
r生字符串的重要性比如你要匹配" \section",很明显 re.compile的参数应该是 "\\section",但是考虑到Python的字串串对”\“也有转义(会被两次转义),所以 可以这么做re.compile(r'\\section")。
re.compile()返回的是一个 pattern对象,常用的它的函数有match() 从第一个字符起始处开始匹配。返回一个match object对象search() 尝试从每一个字符的起始处开始匹配。同样返回一个match object对象findall() 返回所有满足的子字符串,是一个list对象
match object对象的方法有几种,一个是 .group(),返回匹配的字符串。另有start() end() span()等函数比较常见的语法如下所示需要注意的是,\A \Z 指的是 真个string的开始和结束\b是一个长度为0的标志,标志一个word的开始或者结束。
python中的正则表达式
最新推荐文章于 2023-06-15 15:42:04 发布