计算机处理数据时,大多数情况处理的是字符串对象。
eg:
e-mail 地址
数字字符串由纯数字字符构成,或由'-'开头的纯数字字符构成
IP地址===>点分式字符串 xxx.xxx.xxx.xxx (192.168.31.238)
……
上述这些就是我们程序日常需要处理的对象
现在的问题是,计算机如何去处理这些字符串呢???
比如:
计算机如何从 几个G的文件中,找出所有的 IP地址
常人所能想到的方式都太麻烦两!!!
需要一种便捷的方式,来描述这些格式特定的字符串====》 正则表达式
1.正则表达式:
定义:描述某种特定规则的字符串的表达式,就被称为正则表达式(筛子、过滤器)。
2.正则表达式的规则:
正则表达式描述某种符合特定规律的字符串的一种表达式。
正则表达式也被称为 匹配模式,它由一组特定含义的字符组成。通常用于匹配和替换文本。
正则表达式通常分为两种:
(1)普通字符:只代表自己本身的字符。
(2)元字符:有特殊含义的字符。
接下来我们就看看有哪些元字符。
3.元字符:
(1)字符 . ====>匹配任意单个字符。
(2)字符[ ]====> 字符组,由多个字符串组成,但其表示的含义是“匹配[]中列举的任意一个字 符”
比如:
[13579]
匹配1 或 3 或 5 或 7 或 9
(3)字符 - ====>用在元字符 [ ] 中,表示 一段连续的字符。
eg:
[_a-zA-Z][a-zA-Z0-9_] 匹配一个不以数字开头,且由数字/大小写字母/_组成的字符串。
(4)字符[^]====>排除字符组,匹配除[^]内列举的任意字符。
(5)字符 + ====>匹配一个或多个字符。
(6)字符 * ====>匹配0个或多个前置字符。
(7)字符 ?====>匹配一个 或 0个 前置字符。
(8)字符{n}====>匹配n个前置字符。
(9)字符{n,m}==>匹配最少n个,最多m个前置字符。
(10)字符 ^ ===>仅匹配由后面的正则表达式描述的字符串为行首的内容。
eg:
^[0-9]
表示仅匹配行首的数字字符
(11)字符$====>仅匹配由前面的正则表达式描述的字符串为行尾的内容。
eg:
[0-9]$
仅匹配行尾的数字字符
(12) 字符()=====>用来将阔起来的内容作为一个整体.
eg:
(abc){3,}
===>
abcabcabc
abcabcabcabc
……