编程语言
首页 > 编程语言> > 3.28python学习笔记

3.28python学习笔记

作者:互联网

正则表达式

#正则表达式是一门独立的语言 专门用来匹配、校验、筛查所需的数据,任何编程语言都可以使用
#在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