目录
什么是正则表达式?
首先,我们得知道什么是正则表达式,都在说正则表达式,那什么是正则表达式呢。正则表达式(Regular Rxpression)是一种文本模式,包括普通字符和特殊字符。正则表达式使用单个字符串来描述、匹配一系列匹配某个语法规则的字符串。正则表达式是繁琐的,但是很强大,除了可以提高效率外,还可以解决实际问题。况且许多程序的设计都支持正则表达式进行字符串操作。
简介
正则表达式的使用,可以通过简单的办法来实现强大的功能。下面是一个简单是实例:
^[0-9]+abc$
- ^ 为匹配输入字符串的开始位置
- [0-9]+ 匹配多个数字,[0-9]匹配单个数字,+匹配一或多个
- abc$匹配字母abc并以abc结尾,$为匹配输入字符串的结束位置
我们在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接符,并设置用户名的长度,我们就可以使用以下正则表达式来设定。
^[a-z0-9_-]{3,15}$
为什么使用正则表达式?
- 测试字符串内的模式
例如:可以测试输入字符串,以查看字符串内是否出现电话号码模式或者卡号码模式,也就是数据验证。 - 替换文本
可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者使用其他文本替换它 - 基于模式匹配从字符串中提取子字符串
可以查找文档内或输入域内特定的文本
正则表达式的发展历史
正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究,Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。
1956年,一位叫做Stephen Kleene 的数学家在McCulloch 和 Pitts 早期工作的基础上发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念,正则表达式就是用来描述他称为 “正则集的代数”的表达式,因此采用“正则表达式”这个术语。
随后发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix的主要发明人。正则表达式的第一个实用应用程序就是Unix中的qed编辑器。
应用领域
目前正则表达式已经在很多软件中得到广泛的应用,包括nix(linux,Uinx等)、PHP、C#、Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子
正则表达式--语法
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
例如:
- hell+o,可以匹配成hello,helllo,helllllllllllo等,+号代表前面的字符必须至少出现一次(出现1次或多次)
- hell*o,可以 匹配成helo,hello,hellllllo等,*号代表前面的字符可以不出现,也可以出现一次或者多次(0次,1次,多次)
- wor?d,可以匹配wod或word,?问号代表前面的字符最多只可以出现一次(0次或1次)
构造正则表达式的方法和创建数学表达式的方法一样,也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如:a到z)以及特殊字符(称为:元字符)组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串,正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。