东阿企业做网站推广,网络工程师自学教程,网站做301好不好,医院设计机构一、正则表达式#xff1a;正则是很大的一个知识点#xff0c;不会仅仅是下面这些东西 1、概念#xff1a;正则表达式就是一种对字符串匹配的规则#xff0c;注意是只对字符串#xff0c;正则表达式和python没啥关系#xff0c; 2、表达式#xff1a; #xff08;1正则是很大的一个知识点不会仅仅是下面这些东西 1、概念正则表达式就是一种对字符串匹配的规则注意是只对字符串正则表达式和python没啥关系 2、表达式 1字符集用中括号表示例如[1-9][012345][a-z1-9],[A-z] 字符集代表的是一个字符的匹配规则不需写标点符号,可以多种规则连着写按从小到大的排列ascii值所以大写A到小写z也可以但一般不这么写 2元字符 . 匹配除换行符以外的任意字符 \w 匹配数字字母和下划线的字符 大写代表非数字字母下划线的字符 \s 匹配空白符 大写代表非空白符的字符 \d 匹配数字 大写代表非数字的字符 ^ 匹配字符串的开始写在开头 [ ^ ] 若写在字符集当中就代表除字符集中以外所有的字符 $ 匹配字符串的结尾写在最后 3量词 * 零次或多次 一次或多次 零次或一次 1只有1次 2102到10次 44次或多次 规则尽量匹配多次量词只能操作前一个字符的次数。也就是说不会只对一个字符进行匹配就完了而是将指定次数的匹配当作一次整体的匹配 4贪婪匹配使用量词匹配每次尽量匹配多次 非贪婪匹配在量词后加就是尽量匹配最少次 5分组小括号可以把一组字符当作一个整体匹配这个整体也可以使用量词使这个整体重复匹配对于一条匹配的正则只对需要的内容进行分组 6转义符\ 对于一些有特殊意义的字符用\可以表示本身在python中用r转义 补充 1、回溯算法例如.*? 会一直匹配当遇到后不会停止会继续匹配待匹配到最后还是没有就会回头回到之前的 2、.*?字符 取前面任意长度的字符直到字符出现 二、re模块 1、和正则的关系python中的re模块就是为正则服务的 2、方法 1findall正则要匹配的字符串 输出的列表类型元素为每一个匹配的字符串若没有匹配上就输出空列表 2search正则要匹配的字符串 输出的是一种对象并不显示匹配的字符串通常用group来显示匹配上的字符串 例如 import re ret search正则字符串 if ret 若没有匹配上则输出None print(ret.group() ) 注意这里group只能显示第一个匹配上的字符串若本身字符串很长有多个匹配项但是group也只能显示出第一个 3match 用法和search一样但是不同的是match会自动在正则前面加上^代表以什么开头所以group输出的值只能是字符串开始匹配上的字符 4分割 split正则[ab]字符串按照正则的规则依次分割例如先匹配a后分割得到的结果再按b分割最后输出的是列表 5替换 sub正则要替换的内容字符串次数 按照正则匹配上的内容换成 要替换的内容 再输出替换好的字符串。次数是指替换几次也就是替换前几个 6sunb会直接显示输出替换的次数 7obj re.compile (正则) 将正则表达式编译为正则表达式对象这样可以用来对多个字符串进行相同正则的匹配 8finditer正则字符串 会直接输出一个迭代器可循环取值取值时要用group 三、进阶知识 1、findall优先级查询会优先显示分组即小括号里的匹配内容而自动不显示括号外的匹配内容 解决办法......... 只要在小括号里的开头加上问号和冒号注意一定不要分开 2、split 优先级查询若在正则表达式两边加了括号则分割时还会显示出原本要匹配的内容例如上一节中的4给[ab]加括号[ab],这样的话分割出来的内容也会有a和b 3、匹配标签在search方法中在要选择输出的正则规则前面加上P名字然后把正则规则用小括号括起来 import re
retre.search(\w(?Pname\w)\w,h1helloh1)
print(ret.group(name)) 匹配标签 若遇到字符串有重复的内容使我们需要的不能每一次都写一个新的名字只要在需要的正则位置两边加上括号开头写P名字而且括号里的正则也不需要留着 import re
retre.search((?Pname\w)\w(?Pname),h1helloh1)
print(ret.group(name)) 匹配标签2 转载于:https://www.cnblogs.com/wanghl1011/articles/7505429.html