正则表达式(RE,Regular Expression)
正则表达式是一种表达式语法,借助状态机,实现字符串的匹配,以及相关处理
可以这么说:正则表达式表示一类字符串,是有相同规律字符串的集合(语法严格的话,则是代表一个字符串) ,我们称这种规律为模式
正则表达式符合编译原理所说的正规文法,是正规文法的构造式
RE特点
- 简洁
- 特征
RE的使用场景(字符串匹配的引用场景)
表达文本类型的特征(病毒,入侵等)
同时查找和替换一组字符串
匹配字符串的全部或部分
etc.
RE的语法
掌握RE的使用,高效处理字符串的必备技能
RE语法由 字符,操作符构成
字符:所需操做的字符,数据流
操作符:对字符出现模式的说明,指令流
常用操作符
操作符 | 说明 |
---|---|
单字符匹配 | |
. | 表示一个字符,任一个字符 |
[ ] | 表示一个字符,范围类的任一个字符 |
\d | [0-9] |
\w | [A-Za-z] |
[^ ] | []同上,^表示取反 |
多字符匹配 | |
^ | 匹配字符串开头,多个字符 |
$ | 匹配字符串结尾,多个字符 |
abc|edf | 只能为abc,或者为edf |
() | ()内是一个整体,分组 |
* | 前一个字符的0次或无限次扩展 |
? | 前一个字符的0次或一次扩展 |
+ | 前一个字符的1次或无限次扩展 |
{m} | 前一个字符的m次扩展 |
{m,n} | 前一个字符的【m,n】扩展 |
常用的正则表达式实例
RE | 含义 |
---|---|
^[A-Za-z]+$ | 26个字母组成的字符串 |
^[A-Za-z0-9]+$ | 26个字母和数字组成的字符串 |
^[0-9]*[1-9][0-9]*+$ | 正整数形式的字符串 |
^-?\d+$ | 整数形式字符串 |
[1-9]{5} | 中国境内邮政编码 |
[\u4e00-\u9fa5] | 匹配utf-8的中国汉字 |
\d{3}-\d{8}|\d{4}-\d{7} | 国内电话号码 |
匹配IPv4地址
思路:0-99:[1-9]?\d
100-199:1[0-9][0-9]----1\d{2}
200-249:2[0-5]\d
250-255:25[0-5]
IP: (([1-9?\d])|1\d{2}|2[0-5]\d|25[0-5]).){3}([1-9?\d])|1\d{2}|2[0-5]\d|25[0-5])