正则表达式-入门学习

1.正则表达式概述:

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为”元字符”)组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。

2.非打印字符:

非打印字符的打印序列如下表:

这里写图片描述

3.元字符:

许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符”转义”,即将反斜杠字符 () 放在它们前面。下表列出了正则表达式中的特殊字符:

这里写图片描述

这里写图片描述

4.反义字符:

有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义,常用的反义字符如下表:

这里写图片描述

5.限定符:

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配,下表表示经常使用的元字符:

这里写图片描述

6.定位符:

定位符使您能够将正则表达式固定到行首或行尾,还可以定位到出现在一个单词内、在一个单词的开头或者一个单词的结尾,定位符用来描述字符串或单词的边界。常用的正则表达式的限定符有:

这里写图片描述

7.正则表达式的优先级:

正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序:

这里写图片描述

8.贪婪和懒惰:

  • 贪婪匹配:
    当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab,这被称为贪婪匹配。
  • 懒惰匹配:
    有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:a.?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符),这被称为懒惰匹配。
    常用的懒惰限定符如下:
    这里写图片描述

9.正则表达式示例:

  • 一个或多个汉字:^[\u0391-\uFFE5]+$
  • 邮政编码:^[1-9]\d{5}$
  • QQ号码:^[1-9]\d{4,10}$
  • 用户名(字母开头 + 数字/字母/下划线):^[A-Za-z][A-Za-z1-9-]+$
  • 手机号码:^1[3|4|5|8][0-9]\d{8}$
  • URL:^((http|https)://)?([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$
  • 18位身份证号:^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值