python 正则表达式提取数据_正则表达式提取数据

1. 什么是正则表达式

用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑.

2. 正则表达式的常见语法

试试下面正则的结果,注意. 不能匹配\n

string_a = '\n\t\t\n\t\t\n '

ret = re.findall("<.>",string_a)

print(ret)

3.re模块的常见方法

re.match(从头找一个)

re.search(从整个字符串找,找出一个)

re.findall(找出所有的,返回一个列表)

re.sub(替换) 第一个参数是要替换的字符串,第二个是替换后的字符串,第三个是整个字符串

re.compile(编译)

返回一个模型P,具有和re一样的方法,但是传递的参数不同,匹配模式需要传到compile中.

p = re.compile("\d",re.S)

p.findall("python111") re.S 和re.DOTALL表示匹配换行,re>I 表示忽略大小写

4. python中原始字符串r的用法

原始字符串定义(raw string):所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符,原始字符串往往针对特殊字符而言。例如"\n"的原始字符串就是"\\n".

总结:正则中使用原始字符串r能够忽略转义符号带来的影响,加上原始字符串r之后,待匹配的字符串中有多少个\,正则中就添加多少个\即可.

windows中原始字符串r的使用,由于windows中的路径用\表示,但是在正则表达式中,\表示转义,如果不用r,正则会试图将它转义,这样就会标错.

重点: re.findall(r“a.*bc”,”a\nbc”,re.DOTALL)和re.findall(r“a(.*)bc”,”a\nbc”,re.DOTALL)的区别?

不分组时匹配的是全部,分组后匹配的是组内的内容.

re模块匹配分组

split 根据匹配进行切割字符串,并返回一个列表

#coding=utf-8

import re

ret = re.split(r":| ","info:xiaoZhang 33 shandong")

print(ret)

注意点 :

匹配出hhret = re.match(r"\w*\1>", "hh")

匹配出

www.Python.cn

ret = re.match(r".*\2>\1>", label)

匹配出

www.python.cn

ret = re.match(r"\w*)>\w*)>.*(?P=name2)>(?P=name1)>", "

python

")

注意:(?P)和(?P=name)中的字母p大写

你可能感兴趣的:(python,正则表达式提取数据)