doraemon的python 元字符和量词

## 第八章 网络编程

### 8.1 为什么要有正则表达式

- 匹配字符串

- ​    一个人的电话号码
- ​    一个人的身份证号
- ​    一个机器的ip地址

- 表单验证
  - 验证用户输入的信息是否正确
  - 银行卡号
- 爬虫
  - 从网页源码中获取一些链接、重要数据
- 正则规则(元字符,量词)
  - 第一条规则:本身是哪一个字符 ,就匹配字符串中的哪一个字符
  - 第二规则:字符串[字符串1字符串2],一个字符串组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字符能匹配上
    - 字符组中海可以使用范围
      - 所有的范围都必须遵循ascii码从下到大来指定
      - [0-9] [a-z] [A-Z]

### 8.2 元字符:

- \d 表示所有的字数
- \w 表示大小写字符、数字、下划线
- \s 表示空白、空格、换行符、制表符
- \t 匹配制表符
- \n 匹配换行符
- \D 表示所有的非数字
- \W 表示除数字字符下划线之外的所有字符
- \S 表示非空白
- . 表示除了换行符之外的任意内容
- [ ]字符组:只要在中括号内的所有字符都是符合规则的字符
- [^ ]非字符组:只要在中括号内的所有字符都是不符合规则的字符
- ^ 表示一个字符的开始
- $ 表示一个字符的结束
-  | 表示"",注意,如果两规则有重叠部分,总是长得在前面,短的在后面
- ()表示分组,给一部分正规则为一组,|这个符号的作用域就可以缩小了
- [\d\D] [\w\W] [\s\S] 匹配一切字符

| 元字符 |      |      |           |          |
| ------ | ---- | ---- | --------- | -------- |
| \d     | \w   | \s   | \t(table) | \n(next) |
| \D     | \W   | \S   |           |          |
| .      |      |      |           |          |
| [ ]    | [^ ] |      |           |          |
| ^      | $    |      |           |          |
| \|     | ()   |      |           |          |

### 8.3 量词

- {n} 表示只能出现n次
- {n,} 表示至少出现n次
- {n,m}表示至少出现n次,至多出现m次
- ?表示匹配0次或者1次,表示可有可无 但是只能有一个,比如小数点
- +表示匹配1次多着或者多次
- *表示匹配0次或者多次,表示可有可无,但是有可以有多个,比如小数点后n位



默认贪婪匹配,总是在符合量词条件的范围内尽量多匹配

\d[7,12]

非贪婪匹配:惰性匹配,总是匹配符合条件范围内尽量小的字符串

元字符 量词?x:表示按照元字符规则在量词范围内匹配,一旦遇到x就停止,例如:.*?x 匹配任意的内容任意多次遇到x就立即停止

```python
#身份证号
#15位 全数字 首位不为0
#18位,前17位全是数字 首位不为0 最后一位可能是x和数字
[1-9](\d{16}[\dx]|\d[14])
[1-9]\d{14}(\d{2}[\dx])?
```

猜你喜欢

转载自www.cnblogs.com/doraemon548542/p/11295966.html