正则表达式
正则表达式最长用来处理一组有特征的字符串,正则表达式是由字符和操作符表示的
正则表达式规则
| 操作符 | 说明 | 示例 |
|---|---|---|
. | 换行符\n以外的任何字符 | |
[ ] | 字符集,对单个字符给出取值范围 | |
[^ ] | 非字符集,对单个字符给出排除范围 | [^abc] 非a、b、c的单个字符 |
* | 前一个字符0次或者无限次扩展 | abc* 表示 ab、abc、abcc、abccc等 |
+ | 前一个字符1次或者无限次扩展 | abc+ 表示abc、abcc、abccc等 |
? | 前一次字符0次或者1次扩展 | abc?表示 ab、abc |
| | 左右表达式任意一个 | abc|def 表示abc、def |
{m} | 扩展前一个字符m次 | ab{2}c 表示abbc |
{m,n} | 扩展前一个字符m至n次(含n) | ab{1,2}表示abc、abbc |
^ | 匹配字符串开头 | ^abc 表示abc且在一个字符串的开头 |
$ | 匹配字符串结尾 | abc$ 表示abc且在一个字符串的结尾 |
() | 分组标记,内部职能使用 | 操作符 |
\ | 转义符 | 如果字符串中需要用到(),使用()表示 |
\d | 数字,等价于[0-9] | |
\w | 单词字符,等价于[A-Za-z0-9_] |
特殊字符类
| 实例 | 描述 |
|---|---|
. | 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。 |
\d | 匹配一个数字字符。等价于 [0-9]。 |
\D | 匹配一个非数字字符。等价于 [^0-9]。 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 |
\S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 |
\w | 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 |
\W | 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 |
简单的例子
| 正则表达式 | 对应的字符串 |
|---|---|
| P(Y|YT|YTH|YTHO)?N | 'PN'、'PYN'、'PYT'、'PYTHN'、'PYTHON' |
| PYTHON+ | 'PYTHON'、'PYTHONN'、'PYTHONNN' ..... |
| PY[TH]ON | 'PYTON'、'PYTHON' |
| PY[^TH]ON | 'PYON'、'PYaON'、'PYbON' .... |
| PY{:3}N | 、'PN'、'PYN'、'PYYN'、'PYYN' |
经典的正则表达式
| 正则表达式 | 含义 |
|---|---|
| ^[A-Za-z]+$ | 26个字母组成的字符串 |
| ^[A-Za-z0-9]+$ | 26个字母和数字组成的字符串 |
| ^-?\d+$ | 整数形式的字符串 |
| ^[0-9][1-9][0-9]$ | 正整数形式的字符串 |
| [1-9]\d | 中国境内邮政编码,6位 |
| [\u4e00-\u9fa5] | 匹配中文字符 |
| \d{3}-\d | {4}-\d |
做一个匹配IP地址的正则
IP地址规则,IP分四段,每段0~255的取值范围,用.分割
- 不考虑取值范围先创建四段数字组成的正则表达式
\d+.\d+.\d+.\d+ - 每个字段由1-3个数字组成
\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3} - 0~255之间的取值分割成四份,
0-99、100-199、200-249、50-55- 0~99 :
[1-9]?\d - 100~199 :
1\d{2} - 200~249 :
2[0-4]\d*250~255 :25[0-5]
- 0~99 :
- 完成的正则表达式
(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])