正则和re模块

正则表达式是什么?能做什么?

1,把一个文件中所有的手机号码都找出来      从大段的文字中找到符合规则的内容

   open打开文件

   读文件  str

   从一长串的字符串中找到所有的11位数字

   是一个字符一个字符的读

2.输入手机号                                          判断某个字符串是否完全符合规则

  验证这个手机号是否合法

  给这个手机号发送一个验证码

  用户收到验证码  填写验证码

  完成注册

正则表达式

    从大段的文字中找到符合规则的内容

      爬虫   从网页的字符串中获取到你想要的数据

      日志分析   提取所有的时间段的内容

    判断某个字符串是否完全符合规则

      表单验证:手机号  qq号 邮箱 银行卡 身分证号 密码

正则表达式  只和字符串打交道

正则表达式的规则

规则      字符串    从字符串中找到符合规则的内容

字符组 :   [ ]  写在中括号中的内容,都出现在下面的某一个字符的位置上都是符合规则的

[0-9]      匹配数字

[a-z]      匹配小写字母

[A-Z]     匹配大写字母

[8-9]      匹配8-9

[a-zA-Z]      匹配大小写字母

[a-zA-Z0-9]   匹配大小写字母和数字

[a-zA-Z0-9_]  匹配数字字母下划线

元字符

\w      匹配数字字母下划线  word关键字   相当于[a-zA-Z0-9_]

\d      匹配所有的数字     digit   [0-9]

\s      匹配所有的空白符  回车/换行符  制表符 空格   space    [\n\t]

    匹配换行符   回车  \n

    匹配制表符   tab      \t

    匹配空格

\W  \D  和 \w  \d  \s 取反

    [\s\S]  [\d\D]  [\w\W]是三组全集    意思是匹配所有的字符

\b    表示单词的边界

和转义字母相关的元字符

\w  \d  \s(\n\t) \b  \W  \D  \S

^         $

^  匹配一个字符串的开始

$  匹配一个字符串的结束

.    一个点表示匹配除换行符之外的所有的字符

[]  只要出现在中括号中的内容都可以被匹配

[^]  只要不出现在中括号的内容都可以被匹配

   有一些有特殊意义的元字符进入字符组中会恢复它本来的意义:  .  |  [] ()

a|b   或    符合a规则或者b规则的都可以被匹配

  如果a规则是b规则的一部分,且a规则要苛刻/长,就把a规则写在前边

  将更复杂的\更长的规则写在最前边

()      分组    表示给几个字符加上量词约束的需求的时候,就给这些量词分在一个组

量词

{n}表示  这个量词之前的字符\出现n次

{n,}   表示这个量词之前的字符至少出现n次

{n,m}  表示这个量词之前的字符出现n-m次

?  表示匹配量词之前的字符出现  0次  或者 一次 表示可有可无

+  表示匹配量词之前的字符出现  1次  或者  多次

*   表示匹配量词之前的字符出现  0次  或者   多次

匹配整数    \d+

匹配小数    \d+\.\d+

匹配整数和小数   \d+(\.\d+)?

匹配负数和负小数   -?\d+(\.\d+)?

匹配省份证号码:  [1-9]\d{14}(\d{2}[\dX])?

正则表达式的匹配特点:贪婪匹配

它会在允许的范围内去最长的结果

非贪婪模式/惰性匹配  : 在量词后边加上?

    .*?X   匹配任意非换行符任意长度  直到遇到了X(停止条件)就停止

print(r‘\\n‘)

print(r‘\n‘)

关于字符串挪到python中的转义问题:只需要在工具中测试完毕,确认可以匹配上后,挪到 python中在字符串的外边加上r,r‘ ‘即可

re 模块

使用re模块之前必须引入re模块

import  re

查找

findall: 匹配所有   每一项都是列表中的每一个元素

search:只匹配从左到右的第一个,得到的不是直接结果,而是一个变量,通过这个变量的group方法来获取结果

如果没有匹配到会返回None,如果继续使用group会报错

match   从头开始匹配,相当于search中的正则表达式加上一个^

在math的方法的正则表达式后边加上$,结果就是None

字符串处理的扩展: 替换 切割

split

sub  替换 谁  旧的  新的  替换多少次

加替换次数的

subn    返回一个元组,第二个元素是替换次数

re模块的进阶  :

compile  节省使用正则表达式解决问题的时间

编译正则表达式  编译成字节码

在多次使用过程中 不会多次进行编译

finditer 节省使用正则表达式解决问题的空间/内存

原文地址:https://www.cnblogs.com/lovezwfjc/p/9501167.html

时间: 2024-08-02 19:48:15

正则和re模块的相关文章

day18 正则和re模块

# 正则# 正则表达式 ---- 通用的 ,处理 字符串# 正则是一种处理文字的规则# 给我们提供一些规则,让我们从杂乱无章的文字中提取有效信息 #模块# 它只是我们使用python去操作一些问题的工具而已,和要操作的这个东西本身是两件事情 # re模块 -- python使用正则# 正则规则 # []在正则里代表字符组 只约束一个字符# 比如[123456789] 没有顺序# 只约束里边其中一个数字 #[字符组]:表示在一个字符的位置可以出现的所有情况中的集合就是一个字符组#表示数字的字符组[

正则、re模块

字符组 : [字符组] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示 字符分为很多类,比如数字.字母.标点等等. 假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0.1.2...9这10个数之一. 正则 待匹配字符 匹配结果 说明 [0123456789] 8 True 在一个字符组里枚举合法的所有字符,字符组里的任意一个字符和"待匹配字符"相同都视为可以匹配 [0123456789] a False 由于字符组中没

正则,re模块

一.正则表达式(精准匹配) 匹配字符串内容的一种规则 二.字符组 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示 常见字符组格式如下:[0123456789],[0-9],[a-z],[A-Z],必须由从小到大,不可逆序. 三.主要元字符 [^s]除了s不能匹配 a|b == [ab] 表示匹配任意字符:[\w\W],[\d\D],[\s\S] 熟记(.,\w , \d ,^ ,$ ,a|b , () ,[...] ,[^...]) 元字符 匹配内容 元字符 匹配内容

正则及re模块-基础(一)

正则表达式 一说规则我已经知道你很晕了,现在就让我们先来看一些实际的应用.在线测试工具 http://tool.chinaz.com/regex/   http://tool.oschina.net/regex 首先你要知道的是,谈到正则,就只和字符串相关了.在我给你提供的工具中,你输入的每一个字都是一个字符串.其次,如果在一个位置的一个值,不会出现什么变化,那么是不需要规则的. 比如你要用"1"去匹配"1",或者用"2"去匹配"2&q

正则与re模块

一.正则表达式 在线测试工具 http://tool.chinaz.com/regex/ 1.字符组 在同一个位置可能出现的各种字符组成一个字符组,在正则表达中用[ ]表示 一个正则就是一条匹配规则,可以规定一次匹配字符的长度,字符组每次匹配一个长度为1的字符,例如:待匹配字符为:2a+ 使用字符组进行匹配时就会进行三次比较 正则 待匹配字段 匹配结果 说明 [0123456789] 5 5 在一个字符组里枚举所有合法的字符,待匹配字符与其中一个相同,即便匹配成功 [0123456789] 56

python 带正则的search 模块

glob  是python 提供的一个支持正则表达式的查找文件的模块. 实现上采用了os.listdir() 和 fnmatch.fnmatch().  但是没有真的invoking a subshell. glob.glob(pathname) Return a possibly-empty list of path names that match pathname, which must be a string containing a path specification. pathna

正则法则 re模块

1.匹配不到返回空列表 s = "meet_宝元[email protected]\t \n" print(re.findall("\w",s)) #匹配字母.数字.下划线和中文 # s = "meet_宝元[email protected]\t \n" # print(re.findall("\s",s)) #匹配任意空格,制表符,换行符 # s = "meet_宝元[email protected]\t \n&q

day、模块-basedir、os、json模块、pickle和正则模块。

四.正则. re模块: 作用:针对的对象:字符串, 课前引入: 例子一. s='dsdsadsadadsalexdsds's.find('alex') 如何找到字符串内部的alex;?过去学习可使用方法:find.split.replace.但是字符串内置的方法很局限,只能实现完全匹配. 如果要找到:与a**开头的需求呢?就无法实现.要实现模糊匹配就得用到模糊匹配. 例子二.模糊匹配 #在文本里面存着一堆身份证 4504231989347382822 1104231989347382822 11

python学习day19正则模块

正则模块:正则所有程序员都要用到正则爬虫方向要求对正则表达式掌握牢固正则表达式:是一种客观存在的规则re模块,是python提供的操作正则表达式的工具正则表达式在所有语言中都是通用的中括号在正咋中是字符集,只能正序,由小到大.(点)是匹配除了换行以外所有字符\w小写w匹配字母或数字或下划线\s匹配任意的空白符\n匹配一个换行符\d匹配所有数字\t匹配一个制表符\b匹配一个单词的结尾\^匹配字符串的开始   在字符集里面就是\$匹配字符串结尾\W大写的w  匹配非字母或数字或下划线\ID匹配非数字