正则表达式

                                正则表达式
  开发工具与关键技术:VS与正则表达式  作者:北道海棠   撰写时间:2019.06.08

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
正则表达式:又称规则表达式,英文名为Regular Expression,在代码中常简写为regex、regexp或RE。主要作用:通常被用来检索、替换那些符合某个模式(规则)的文本通俗理解:正则表达式是用于进行文本匹配的工具。

元字符的讲解
               代码     说明
                .       匹配除换行符以外的任意字符
                \w      匹配数字或字母或下划线或汉字
                \s      匹配任意的空白符
                \d      匹配数字
                \b      匹配单词的开始或结束
                ^       匹配字符串的开始
                $       匹配字符串的结束

字符转义’’:如果你想查找元字符本身的话,比如你查找“.”,或者“*”,就出现了问题:你没法指定它们,因为它们会被解释成其它的意思。这时你就必须使用‘\’来取消这些字符的特殊意义。因此,你应该使用“.”和“*”。当然,要查找‘\’本身,你也得用“\”。

   常用的限定符(重复)
                代码        说明
                *	        重复零次或更多次
                +	        重复一次或更多次
                ?	        重复零次或一次
                {n}	        重复n次
                {n,}   	    重复n次或更多次
                {n,m}	    重复n到m次

   反义
            代码/语法	说明
                \W	     匹配任意不是字母,数字,下划线,汉字的字符
                \S	     匹配任意不是空白符的字符
                \D	     匹配任意非数字的字符
                \B	     匹配不是单词开头或结束的位置
                [^x]	     匹配除了x以外的任意字符
                [^aeiou]  匹配除了aeiou这几个字母以外的任意字符

零宽断言
用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们被称为零宽断言。

      代码/语法	    说明
        (?=exp)	    匹配exp前面的位置
        (?<=exp)    匹配exp后面的位置
        (?!exp)	    匹配后面跟的不是exp的位置
        (?<!exp)    匹配前面不是exp的位置

(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I’m singing while you’re dancing.时,它会匹配sing和danc。
(?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。
贪婪与懒惰
贪婪:当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符这被称为贪婪匹配。
懒惰:有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。
PS:如果将前面给出的限定符转化为懒惰匹配模式,只要在它后面加上一个问号?

懒惰限定符
               *?	    重复任意次,但尽可能少重复
                +?	    重复1次或更多次,但尽可能少重复
                ??	    重复0次或1次,但尽可能少重复
                {n,m}?	重复n到m次,但尽可能少重复
                {n,}?	重复n次以上,但尽可能少重复
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值