ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

3.28python学习笔记

2022-04-13 01:31:38  阅读:166  来源: 互联网

标签:匹配 re python 笔记 group 正则表达式 字符串 3.28 match


正则表达式

#正则表达式是一门独立的语言 专门用来匹配、校验、筛查所需的数据,任何编程语言都可以使用
#在python中如果想用就必须借助于内置模块re。

练习网站

http://tool.chinaz.com/regex/

字符组

'''单个字符组默认一次只匹配一个字符'''
1.[0123456789]		匹配0到9之间的任意一个数字
2.[0-9]			匹配0到9之间的任意一个数字(简写)
3.[a-z]			匹配a到z之间的任意一个小写字母
4.[A-Z]			匹配A到Z之间的任意一个大写字母
5.[0-9a-zA-Z]           匹配任意一个数字或者大小写字母(没有顺序)

常用特殊符号

  .			匹配除换行符(\n)以外的任意字符
  \w			匹配数字、字母、下划线(后续筛选变量名可能用到)
  \d			匹配任意的数字
  \t			匹配一个制表符(tab键)
  ^			匹配字符串的开始
  			eg:^9  找9并且这个9必须在开头
  $                     匹配字符串的结尾
  			eg:9$  找9并且这个9必须在末尾
  \W			匹配非字母或数字或下划线
  \D			匹配非数字
  a|b			匹配a或者b 管道符就是or(或)的意思
  ()			给正则表达式分组 不影响正则匹配(后续再讲)
  []			字符组的概念(里面所有的数据都是或的关系)
  [^]			上箭号出现在了中括号的里面意思是取反操作

量词

量词必须跟在表达式的后面 不能单独使用 目的是增加匹配的字符数

字符 功能
* 匹配前⼀个字符出现0次或者⽆限次,即可有可⽆
+ 匹配前⼀个字符出现1次或者⽆限次,即⾄少有1次
? 匹配前⼀个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前⼀个字符出现m次
{m,n} 匹配前⼀个字符出现从m到n次,若省略m,则匹配0到n次,若省略n,则匹配m到无限次

正则表达式贪婪与非贪婪匹配

#Python⾥数量词默认是贪婪的,总是尝试匹配尽可能多的字符;⾮贪婪则相反,总是尝试匹配尽可能少的字符。
举个例子:
当要去在”abbbc”中筛选出‘ab’,利用正则表达式”ab*”,将找到”abbb”。而如果使用非贪婪的数量词”ab*?”,将找到”ab”。
所以一般情况下使用非贪婪模式来提取。(在"*","?","+","{m,n}"后⾯加上?,使贪婪变成⾮贪婪。)

python内置模块之re模块

#re.match函数
    re.match(正则表达式,待匹配的文本)
#使用说明
	1.从字符串的起始位置匹配,如果不是起始位置匹配成功的话,match()就返回None。匹配成功re.match方法返回一个匹配的对象。

	2.匹配到数据的话,可以使⽤group⽅法来提取数据。以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

	3.group()用来提出分组截获的字符串,()用来分组,group() 同group(0)就是匹配正则表达式整体结果,group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。没有匹配成功的,re.search()返回None。

#re.search函数
	re.search(正则表达式,待匹配的文本)
#使用说明
re.search 扫描整个字符串并返回第一个成功的匹配,如果没有匹配,就返回一个 None。

re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配

#re.findall函数
	re.findall(正则表达式,待匹配的文本)
#使用说明
	在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。注意: match 和 search 是匹配一次 findall 匹配所有。

#re.finditer函数
    re.finditer(正则表达式,待匹配的文本)
#使用说明
	和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

标签:匹配,re,python,笔记,group,正则表达式,字符串,3.28,match
来源: https://www.cnblogs.com/zq0408/p/16138417.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有