正则表达式

正则表达式

  • 正则表达式是一门单独的技术,在实际操作过程中由于它优雅的字符匹配特性,各种编程语言都陆续支持正则表达式的操作方式,Python中通过内建模块re进行正则表达式的处理,大致按照如下三个步骤进行数据的操作
    • 确定源数据:获取整体数据
    • 按照目标数据定义正则表达式匹配规则
    • 从整体数据中匹配符合要求的数据
  • 正则表达式的处理,最核心的是先掌握正则表达式的语法和匹配规则,根据实际操作的不同需要,正则表达式定义了不同的数据匹配方式
表达式 描述
^ 匹配开头
$ 匹配结束
. 匹配任意..字符
x? 匹配字符x出现0次或者1次
x+ 匹配字符x出现1次或者多次
x* 匹配字符x出现0次或者多次
(xy)+ 分组的方式,匹配字符串xy出现1次或者多次
[xy]+ 匹配字符x或者y出现了1次或者多次
[0-9]+ 匹配一个数字出现了1次或者多次
[a-z]+ 匹配一个小写字母出现了1次或者多次
[A-Z]+ 匹配一个大写字母出现了1次或者多次
[a-zA-Z]+ 匹配一个字母[大小写均可]出现了1次或者多次
x{m,} 匹配字符x出现了m次以上
x{m,n} 匹配字符x出现了m次以上n次以下
$ 匹配字符出现了n次以下
... ...
\d 匹配一个数字,和[0-9]相同
\D 匹配一个非数字,和[^0-9]相同
\w 匹配一个字母数字或者下划线,和[a-zA-Z0-9_]相同
\s 匹配一个空白字符
\b 匹配一个字符的边缘位置 hello worhellold : \bhello\b
... ...
* 贪婪匹配符,和其他表达式一起使用
? 懒惰匹配符,和其他表达式一起使用

python中操作正则表达式

  • python通过内建的re模块,对于正则表达式的操作提供了友好的支持
    • PS:正则表达式是一个单独的技术,python支持它的操作
  • python在实际操作过程中,re模块提供了两种操作方式
    • 核心操作方式
      • 正则匹配对象pattern,通过re模块的compile()函数对于正则表达式字符串进行编译得到
      • 通过pattern匹配对象对目标字符串进行匹配检索操作
    • 快捷操作方式
      • 直接通过re模块的各种正则函数进行字符串的匹配检索操作
# 核心操作方式
0.正则表达式字符串
1.通过表达式字符串->得到匹配对象
2.通过匹配对象->目标字符串进行检索

# 快捷操作方式
0.正则表达式字符串
1.通过re模块->目标字符串进行检索

正则表达式核心操作方法

  • match():用于根据表达式进行字符匹配的操作函数~只匹配一次[从指定的起始位置进行匹配]
  • search():用于根据表达式进行字符匹配的操作函数~只匹配一次[从完整的目标字符串中进行检索匹配]
  • findall():用于根据表达式进行字符匹配~匹配多次,返回匹配到的列表
  • finditer():用于根据表达式进行字符撇皮~匹配多次,返回匹配到的迭代器
  • split():根据指定的表达式对目标字符串进行切割,返回切割后的列表
  • sub():用于字符替换
# 匹配对象的函数
match(string[, pos[, endpos]])
search(string[, pos[, endpos]])
findall(string[, pos[, endpos]])
finditer(string[, pos[, endpos]])

# re模块的函数
match(pattern, string, flags=0)
search(pattern, string, flags=0)
findall(pattern, string, flags=0)
finditer(pattern, string, flags=0)

# 公共函数[匹配对象|re模块操作方式一样]
split():拆分字符串的函数
sub():根据正则替换字符串的函数

常用的正则表达式

  • 匹配中文字符的正则表达式
    • [\u4e00-\u9fa5]
    • 匹配中文还真是个头疼的事,有了这个表达式就好办了
  • 匹配首尾空白字符的正则表达式
    • ^\s|\s$
    • 可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
  • 匹配Email地址的正则表达式
    • \w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*
    • 表单验证时很实用
  • 匹配网址URL的正则表达式
    • [a-zA-z]+://[^\s]*
  • 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
    • ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    • 表单验证时很实用
  • 匹配腾讯QQ号
    • [1-9][0-9]{4,}
    • 腾讯QQ号从10000开始
  • 匹配中国邮政编码
    • [1-9]\d{5}(?!\d)
    • 中国邮政编码为6位数字
  • 匹配身份证
    • \d{15}|\d{18}
    • 中国的身份证为15位或18位
  • 匹配ip地址
    • \d+.\d+.\d+.\d+
    • 提取ip地址时有用

你可能感兴趣的:(正则表达式)