正则表达式

# 正则表达式
- 是一个计算机科学的概念
- 用于使用单个字符串来描述,匹配符合某个规则的字符串
- 常常用来检索,替换某些模式的文本

## 正则的写法
- .(点号): 表示任意一个字符,除了\n,比如查找所有的字符 \.
- []: 匹配中括号中列举的任意字符,比如[L,Y,0],查找字符串中包含这三个字符的字符串
- \d: 任意一个数字
- \D: 除了数字都可以
- \s: 表示空格,tab键
- \S: 除了空白符号
- \w: 单词字符,就是a-z,A-Z,0-9,_
- \W: 除了a-z,A-Z,0-9,_
- *: 表示前面内容重复零次或者多次,
- +: 表示前面内容至少出现一次
- ?: 前面才出现的内容零次或者一次
- {m,n}: 允许前面内容出现最少m次,最多n次
- ^: 匹配字符串的开始
- $: 匹配字符串的结尾
- \b: 匹配单词的边界
- (): 对正则表达式内容进行分组,从第一个括号开始,编号逐渐增大
- 例子:
- 验证一个数字: ^\d$
- 必须有一个数字,最少一个: ^\d+$
- 只能出现数字,且位数为5-10位: ^\d{5,10}$
- 注册者输入年龄,要求16岁以上,99岁以下: ^[16,99]$
- 只能输入英文字符和数字: ^[A-Za-z0-9]$
- 验证qq号码: [0-9]{5,12}

- \A: 只匹配字符串开头, \Aabcd,则abcd
- \Z: 仅匹配字符串结尾, abcd\Z,则abcd
- |: 左右任意一个
- (?P<name>...): 分组,除了原本的编号再制定一个别名, (?P<id>123445){2}
- (?P=name): 引用分组

案例:
import re

# 查找数字
p = re.compile(r'\d+')

# 在字符串"123jasd123787wsejhashd992"中进行查找,按照规则p制定的正则表达式进行查找
# m = p.match("123jasd123787wsejhashd992")
# # 从第一个开始为数字的话就符合
# m = p.match("asdjh123jahsdh777asdh222")
# 参数5,10表示在字符串中查找的范围即index
m = p.match("asdjh123jahsdh777asdh222", 5, 10)

print(m)
posted @ 2018-11-27 21:19  承丶承承承  阅读(217)  评论(0编辑  收藏  举报