[干货分享]
正则表达式基础语法
# 正则表达式基础语法
正则表达式有着广泛的用途,各类编程语言对正则表达式都有良好的支持。常用于:
+ 验证字符串是否符合指定特征(如验证手机号码)
+ 从一个长的文本中查找符合指定特征的字符串(爬虫常通过正则表达式从html中抓取有效信息)
+ 在长文本中进行字符串替换
本文将介绍正则表达式的基础语法。
## 单字符匹配
+ 常规字符:数字0-9,字母a-z、A-Z,无需转义的字符(如下划线,中文标点符号等)
+ 简单的转义字符
+ 不方便书写的,如\n,\r
+ 在正则表达式中有特殊含义的字符,如$,^,括号
+ 能够与多种字符匹配
| 表达式 | 可匹配 |
|---- | ------ |
|\d|任意字母|
|\w|任意字母、任意数字、下划线|
|\s|任意空白字符(空格、制表符、换页符)|
|.|除\n的任意字符|
+ 用方括号[ ]自定义表达式
| 表达式 | 可匹配 |
|---- | ------ |
|1e4hg87|1e4hg87中的任意字符|
|^1e4hg87|除1e4hg87外的任意字符|
|1-7|1与7之间的任意字符,相当于1234567|
|d-g|d与g之间的任意字符,相当于defg|
|.|除\n的任意字符|
## 匹配次数
|表达式|可匹配|
|-----|------|
|+|匹配至少1次|
|*|匹配任意次(可以为0)|
|?|匹配0次或1次|
|{n}|恰好匹配n次|
|{n,}|至少匹配n次|
|{n,m}|匹配次数大于等于n,小于等于m|
## 特殊的匹配
|表达式|可匹配|
|-----|------|
|^|匹配开头|
|$|匹配结尾|
|\b|匹配字符串的边界|
|\||或|
|()|把括号内的表达式作为整体|
## 示例
```
匹配手机号码(前3个数字组合是限定的,后8个任意)
^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\d{8}$
匹配身份证号码
^([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])$
```