一、正则表达式

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

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

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

content = input('>>>')
if content.isdigit():
if len(content) == 11:
if content.startswith('') or \
content.startswith('') or \
content.startswith('') or \
content.startswith(''):
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次

最新文章

  1. php __invoke 和 __autoload
  2. SpringBoot读取配置文件
  3. Eclipse使用多个Console
  4. iOS远程推送1
  5. nginx主备配置
  6. Java日志系统框架的设计与实现
  7. c# & Fizzler to crawl web page in a certain website domain
  8. 淘宝API开发(三)
  9. node安装 教程 + git初步
  10. Cacti监控Windows主机,Windows主机的正确配置
  11. nodejs之简介及安装(一)
  12. RobotFramework环境搭建
  13. JAVAC 命令使用方法
  14. 从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)
  15. UML九种图-包图、类图
  16. ILMerge 简单使用
  17. Flex中利用单选按钮切换柱状图横纵坐标以及描述
  18. python----常用功能
  19. How to Be Assertive Asking for What You Want Firmly and Fairly
  20. ZOJ3211-Dream City(贪心思想+变形的01背包)

热门文章

  1. hive 一次性命令
  2. 【Visual Installer】如何提醒用户卸载旧版本软件
  3. Hbase(四) 过滤器查询
  4. 专题训练之数位DP
  5. Project Euler 453 Lattice Quadrilaterals 困难的计数问题
  6. 初识python版本
  7. Libevent学习笔记(五) 根据例子学习bufferevent
  8. duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
  9. [DeeplearningAI笔记]序列模型2.8 GloVe词向量
  10. 在Eclipse中开发使用Spring IOC的JUnit/TestNG测试用例之详解