python兵器谱之re模块与正则表达式

一、正则表达式

·1.正则表达式的应用场景: 应用特有的规则,给我需要的符合规则的字符串,在字符串中只有符合条件的才会被匹配和从大段的字符串中提取需要的数据

·匹配字符串的规则:

·1.字符串:用户输入,网络获取,文件读取​​

·表单注册

·爬虫​​:从网页中批量的额获取数据​

·2.正则语法

a.元字符:

·​ [ ] 字符组 表示一个位置上能出现的字符 [字符串] [0-9]/[a-z]/[A-Z] 表示范围

·[^ ]​ 非字符组

·. 除了换行符以外的​任意字符

·w 代表数字字母下划线​​ (符合变量规则)

·W 除了字母数字下划线​都可以匹配

·d 表示[0-9]​

·D 除了数字

·​ Tab键 制表符

· Enter​

·' ' ​ 空格 空白符

·s 空格,Tab,​​Enter

·S 除了空格都能匹配到​

· 匹配的一个单词的两端​,放在字母前面就匹配首字母,放在字母后面就匹配尾字母

·​​ B 除了两端都可以匹配到.匹配中间的字母

·^ 匹配一个字符串的开头

·$ 匹配一个字符串的结尾​​ ^字符串有多长$ 要匹配的字符串就有都多长

·a | b 或 有包含关系的字符串使用或较长的字符串放左边​

·() 分组​ 分组命名(?P<分组的名字>分组中的正则表达式)

·b.量词 (量词默认贪婪匹配(在规则内尽可能多的匹配),运用的是回溯算法,在量词后面放一个问号,就是非贪婪匹配(惰性匹配))

·{n} 重复至少n次

·? 匹配0次或者1次

·​​​​​ + 匹配至少一次

·* 匹配零次或者多次​

··re 模块

·​import re

·re.findall('正则表达式','待匹配字符串')​ 以列表的形式返回匹配的值,优先返回分组内的内容

·​​ret = re.search('正则表达式','待匹配字符串') 从左到右找到匹配的第一个​,通过group(分组的组号,来显示分组内的数据)

·​ret1 = ret.group() 读取获得的值 只有一项结果

·​re.match('正则表达式','待匹配字符串') 默认取第一个值,即强制在正则表达式之前加一个^​​,必须开头以其开始

·re.split('正则表达式',切割对象) 按照正则规则来切分​​ 在正则表达式外加括号就可以保留要切掉的对象

·re.sub('正则表达式',替换对象,要替换变量,替换次数) 按照正则规则替换,默认全部替换

·re.subn()​​ 全部替换 ,返回里面有替换的次数

·

·​re​​.compile('正则表达式') 对正则表达式进行预编译,返回一个编译后的表达式的字节码.在多次执行相同的正则表达式的时候,提前用他预编译,会提高效率

·​re.finditer() 会返回一个迭代器,节省内存

原文地址:https://www.cnblogs.com/sanzangdashi3/p/9985325.html