Python 正则表达式、re模块

一、正则表达式

对字符串的操作的需求几乎无处不在,比如网站注册时输入的手机号、邮箱判断是否合法。虽然可以使用python中的字符串内置函数,但是操作起来非常麻烦,代码冗余不利于重复使用。

正则表达式是一种特殊的字符串序列,使用它可以非常方便的匹配一个字符串是否合法。

1)判断手机号是否合法:根据手机号码一共11位并且是只以13、15、18、17开头的数字这些特点,我们用python写了如下代码:

content = input(‘>>>‘)
if content.isdigit():
    if len(content) == 11:
        if content.startswith(‘13‘) or         content.startswith(‘15‘) or         content.startswith(‘18‘) or         content.startswith(‘17‘):
            print(‘ok‘)
        else:
            print(‘手机号错误‘)
    else:
        print(‘必须11位!‘)
else:
    print(‘必须全为数字‘)

Python判断手机号是否合法

2)正则表达式判断:

import re
phone_num = input(‘>>>‘)
if re.match(r‘^(13|15|18|17)[0-9]{9}$‘,phone_num):
    print(‘ok‘)

二、字符组:只表示一个位置的字符范围

首先谈到正则,就只和字符串相关了。如果在一个位置的一个值,不会出现什么变化,那么是不需要规则的。比如你要用"1"去匹配"1",或者用"2"去匹配"2",直接就可以匹配上。这连python的字符串操作都可以轻松做到。那么在之后我们更多要考虑的是在同一个位置上可以出现的字符的范围。

在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[ ]表示

正则
待匹配字符
匹配结果
说明
[0123456789]
8
True
在一个字符组里枚举合法的所有字符,字符组里的任意一个字符和"待匹配字符"相同都视为可以匹配
[0123456789]
a
False
由于字符组中没有"a"字符,所以不能匹配
[0-9]
7
True
也可以用-表示范围,[0-9]就和[0123456789]是一个意思
[a-z]
s
True
同样的如果要匹配所有的小写字母,直接用[a-z]就可以表示
[A-Z]
B
True
[A-Z]就表示所有的大写字母
[0-9a-fA-F]
e
True
可以匹配数字,大小写形式的a~f,用来验证十六进制字符

元字符:

元字符
匹配内容
匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W
匹配非字母或数字或下划线
\D
匹配非数字
\S
匹配非空白符
a|b
匹配字符a或字符b
()
匹配括号内的表达式,也表示一个组
[...]
匹配字符组中的字符
[^...]
匹配除了字符组中字符的所有字符

量词:仅修饰前面紧跟的字符组或字符串

量词
用法说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

原文地址:https://www.cnblogs.com/weihengblog/p/8480425.html

时间: 2024-10-08 21:02:15

Python 正则表达式、re模块的相关文章

python 正则表达式 re模块基础

简介 正则表达式(regular expression)是可以匹配文本片段的模式.最简单的正则表达式就是普通字符串,可以匹配其自身.比如,正则表达式 'hello' 可以匹配字符串 'hello'. 要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如 Linux 中的 awk, sed, grep,或者编程语言 Perl, Python, Java 等等. 正则表达式有多种不同的风格,下表列出了适用于 Python

python 正则表达式re模块

#####################总结##############    优点:  灵活, 功能性强, 逻辑性强.               缺点:  上手难,旦上手, 会爱上这个东西       工具: 各大文本编辑器一般都有正则匹配功能. 我们也可以去 http://tool.chinaz.com/regex/进行在线测试. 正则表达式由普通字符和元字符组成,普通字符包含大小写字母, 数字,在匹配普通字符的时候我们直接写就可以了 (1) 字符组  字符组很简单用[]括起来,在[]中

Python 正则表达式re模块使用

re是Python的正则表达式模块,在此记录实际开发过程中的使用. 正则表达式的最佳实践是使用re.compile方法编译后使用,效率会更好 1.re.search() example: TS 1423031065.017865025 2015-02-04 14:24:25  14:24:25 up 82 days, 23:51,  2 users,  load average: 0.02, 0.03, 0.10 匹配 TS开头跟一个空格后跟若干个数字. >>> import re &g

Python正则表达式re模块

正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 正则表达式概念 使用单个字符串来描述匹配一系列符合某个句法规则的字符串 是对字符串操作的一种逻辑公式

python正则表达式re模块的简单使用

正则表达式无论是提取数据还是在做爬虫的时候都会经常使用,下面说下re模块的常见使用. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none. 函数语法: re.match(pattern, string, flags=0) import re # todo re.match的用法,从字符串第一个开始匹配 content = 'Hello 123 4567 World_this a regex demo' # ^todo 匹配字符串开头,

python正则表达式 ---- re模块

1.正则表达式 正则就是使用一些具有特殊含义的符号组合到一起,来描述字符串或字符的方法. 2.常用的正则匹配模式 import reprint(re.findall('\w','hello_ | egon 123')) #匹配字母数字下划线 print(re.findall('\W','hello_ | egon 123')) #与小w相反 匹配非数字字符下划线 print(re.findall('\s','hello_ | egon 123 \n \t')) #匹配任意空白字符如 [ \t,\

Python 正则表达式_re模块_使用compile加速

使用compile加速 compile( rule [,flag] ) 将正则规则编译成一个Pattern对象,以供接下来使用. 第一个参数是规则式,第二个参数是规则选项. 返回一个Pattern对象 直接使用findall ( rule , target )的方式来匹配字符串,一次两次没什么,如果是多次使用的话,由于正则引擎每次都要把规则解释一遍,而规则的解释又是相当费时间的,所以这样的效率就很低了.如果要多次使用同一规则来进行匹配的话,可以使用re.compile函数来将规则预编译,使用编译

7.python之正则表达式re模块

一.re模块的常用方法: re.findall() 用于返回一个字符串中,所有能被正则表达式所匹配到的字符串,以列表的方式返回. 用法re.findall(正则表达式,字符串). s1 = "sadjhjafdsajkhjsdaysadsadduayu" 比如说,想要从上面这一长串字符串中,匹配出a后面有一个任一字符在紧接着一个字母u的字符串. print re.findall('a.u',s1) >>>['ayu'] re.finditer()作用和findall一

python之路 正则表达式,模块导入的方法,hashlib加密

一.正则表达式re python中re模块提供了正则表达式相关操作 字符: . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 次数: * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 模式 描述 ^ 匹配字符串的开头 $ 匹配字符串的末尾. . 匹配任意字符,除了换行符,当re.DO

Python中的正则表达式-re模块

有时候我们需要模糊查找我们需要的字符串等值,这个时候需要用到正则表达式. 正则表达式的使用,在python中需要引入re包 import re 1.首先了解下正则表达式的常用语法 --单个字符 . 任意的一个字符 a|b 字符a或字符b [afg] a或者f或者g的一个字符 [0-4] 0-4范围内的一个字符 [a-f] a-f范围内的一个字符 [^a] 不是a的一个字符 \s 一个空格 \S 一个非空格 \d [0-9],即0-9的任意字符 \D [^0-9],即非0-9的任意字符 \w [0