Python正则表达式

正则表达式(Regular Expression)

  • 一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
  •  使用单个字符串来描述、匹配一系列   某个句法规则的字符串。
  • 繁琐但强大,学会后可提高工作效率和成就感

   它的祖先是  人类神经系统如何工作  的早期研究

 什么是字符串呢?    

  字符:字母,数字,符号,字   1、2、3、A、B、C、~!·#¥%……—*()——+等等

  字符串:有限字符的序列      序列:被排成一列的对象      

  字符串:有限字母,数字,符号,字等等的被排成一列的对象

   ^  匹配输入字符串开始的位置(或取反)

   $  匹配输入字符串结束的位置

  [0-9]    匹配单个数字

           至少一个数字然后abc

  • +  一次或多次    +最大方,老客气了,最少要一次 一定要给
  • *  零次或多次    *最自由  有或没有都可以 我都可以,你随便啊
  • ?  零次或一次   特别抠门的?  1个,不能再多了
  • {n}  匹配确定的次数
  • {n,m}  最少n次最多m次

 .  匹配任意字符,除了换行符

d 匹配一个数字字符。

   独立单词  边界的意思/i   大小写不敏感

只允许字母和空格:/^[a-zA-Z ]*$/

邮箱格式:/([w-]+@[w-]+.[w-]+)/      w@w.w

w 指数字英文加下划线

re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。    要一样一样的哈

 

print(re.match('www', 'www.runoob.com').span())
#(0, 3)    元组

re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。

re.compile 函数  

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

编译:利用编译程序从源语言编写的源程序产生目标程序的过程  (源程序->目标程序)

格式:  re.compile(pattern[, flags])

flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:    是.哦!

  1. re.I 忽略大小写
  2. re.L 表示特殊字符集 w, W, , B, s, S 依赖于当前环境
  3. re.M 多行模式
  4. re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
  5. re.U 表示特殊字符集 w, W, , B, d, D, s, S 依赖于 Unicode 字符属性数据库
  6. re.X 为了增加可读性,忽略空格和 # 后面的注释

findall

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

findall(string,pos,endpos)      #后2个位可选参数,为起始和结束  默认为0和默认字符串长度

pattern = re.compile(r'd+')
pattern.findall('run88 oob123 google456', 0, 10)
#['88', '12']

 

a = 'China_net809Chinna2018Nanjing'    #要匹配的字符串
b = re.findall(r'd{4}Nanjing', a)     #字符串在后
print(b)    #['2018Nanjing']
a=re.compile(r'd{4}')          #要匹配的格式
b=a.findall('China_net809Chinna2018Nanjing')      #格式在前        格式都在前
print(b)    #['2018Nanjing']

Python中的原生字符串"r"

 Python中字符串前面加上 r 表示原生字符串      

 假如你需要匹配文本中的字符””,那么使用编程语言表示的正则表达式里将需要4个反斜杠””:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。 

 

python中""和'的区别

如果是要表示字符串,那么没什么区别。但是,but  想要有'就要" 

print("Let's go")
print('你说"加油陌生人"')    

 

 

 

 

 

 

 

 

 

re_path和path

功能一样,但前者在写url可用正则表达式,所以更牛逼

在正则表达式中定义变量,需要使用圆括号括起来。这个参数是有名字的,那么需要使用(?P<参数的名字>)。然后在后面添加正则表达式的规则。

命名Python正则表达式组的语法

(?P<name>pattern),其中name是组的名称

r"^list/(?P<year>d{4})/$"      #形如  list/5555/  
原文地址:https://www.cnblogs.com/zhang1422749310/p/11283670.html