正则表达式

你不懂的正则_java

什么是正则表达式呢? 从名字上来看的话,就是通过正确的法则去匹配的表达式, 比较官方的定义就是,定义模式的字符串,其本质就是字符串,主要是用来匹配目标字符串,已找到匹配的字符串,并对其进行处理,如分割,替换等,正则表达式匹配语法

正则表达式一览表

你不懂的正则_java_02

re 正则模块

  1. re.compile()函数

  1. 见名知意,compile 就是编译的意思:使用正则表达式之前,

  2. 需要将自定义的模式编译成为正则表达式对象(模式对象),

  3. 这个对象代表了模式中对应的正则表达式,匹配时,

  4. 可以调用其match()函数,search()函数


  5. 函数语法如下:

  6. re.compile(pattern,flags=0)

  7. 参数说明:pattern是匹配的正则表达式,flags是标志位,控制匹配的方式

  1. compile 函数中的flags取值

  1. re.match()函数

  1. re.match()函数尝试从字符串的起始位匹配一个模式,匹配成功,re.match()函数返回一个匹配对象,是否返回None;


  2. 函数语法:

  3. re.match(pattern,string,flags=0)


  4. 参数说明:

  5. pattern是匹配正则表达式,String是进行匹配的目标字符串,flags是标志位,控制正则表达式,如是否区分大小写,多行匹配

  1. re.search()函数

  1. re.search()函数是扫描整个字符串并返回第一个成功的匹配,匹配成功,返回一个匹配的对象,否则返回None


  2. 语法:

  3. re.search(pattern,string,flags)

  4. 参数含义同re.match()函数一样,

  1. re.findall()函数

re.findall()函数返回总是正则表达式在字符串中所有匹配结果的列表函数语法:re.findall(pattern,string[,flags])参数说明与re.match()函数
  1. re.sub()函数

re.sub()函数用于替换字符串中的匹配项语法函数:re.sub(pattern,repl,string,count=0,flags=0)参数说明:pattern是正则表达式中替换的模式表达式字符串,repl是替换的字符串,也可以为一个函数,string是一个要被查找替换的原始字符串,count是匹配后替换的次数,默认为0,表示替换为所有匹配

说了上面这么多,是不是很罗嗦呢?并不是罗嗦哦,其实上面就是一些API的说明,接下来,我们就来看看实际例子吧,小伙伴们期待吧?

电子邮箱格式的匹配

任务描述:编写一个Python程序 检查电子邮箱的格式是否正确

  1. 设计思路:用户输入邮箱,构造邮箱的匹配正则表达式,调用re.match()函数进行匹配,并输入提示

import rep = re.compile(r'^[\w\d]+[\d\w\_\.]+@([\d\w]+)\.([\d\w]+)(?:\.[\d\w]+)?$|^(?:\+86)?(\d{3})\d{8}$|^(?:\+86)?(0\d{2,3})\d{7,8}$')email = input("请输入正确的邮箱:")m = p.match(email)print(m.group())

你不懂的正则_java_03

电话号码的验证

  1. import re

  2. address = "李明 13530315051 liming@126.com\

  3. 刘东 13791072536 liudong@163.com\

  4. 张旭 18667676767 zhangxu@sina.com\"


  5. p1 = re.compile(r'\d+')

  6. phone = p1.findall(address)


  7. print(phone)


  8. p2 = re.compile("^0\d{2,3}\d{7,8}$|^1[358]\d{9}$|^147\d{8}")


  9. for e in phone

  10.    m = p2.match(e)

  11.    if m:

  12.        print(p2.match().group())