个人理解的正则表达式

菜鸟理解的正则表达式

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:RegexBuddy 4、正则

作者:梁柏源

撰写时间:2019/3/21

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

作为一个合格菜鸟对正则表达式的理解就是用来匹配文本的代码(工具),实质上正则表达式是记录文本规则的代码,所以又叫做规则表达式,英文名为Reguaklar Expression,在代码中经常简写为regex、regexp、或者是RE,目前本菜就知道这一点(还有没有就不知道了),正则表达式通常用来匹配、替换那些符合某一个规则的文本,毕竟也叫做规则表达式啊!

正则表达式要精确的匹配出文本当然少不了专属符号啦,对于正则表达式规定的特殊代码(也就是符号),我们都叫它“元字符”。由于元字符有点多吧,而且本菜又是初学者(菜鸟)接触不多,所以就挑一下简单的来说:

首先是这个“.”恩,英文状态下的句号,这个句号就厉害了:匹配除换行符以外的任意字符;

什么是换行符呢?就是换一行的意思啦,enmmmm,就是enter键,o((⊙﹏⊙))o如图:

看除了换行符(就是那个LF,看到没有第一行结束那个LF),不管汉字、英文、标点符号、特殊符号、数字( ̄□ ̄||忘打了)都能匹配;

接下来就是\w,它是匹配数字、字母、下划线、汉字的字符,(在这里就顺便提一下反义代码)

\w的反义代码就是\W(对哒,你没看错就是变了一下w的大小写,是不是很无语),它是匹配不是数字、字母、下划线、汉字的字符。

同样的\s:匹配任意空白的字符(enmmmm,就是空格),反义:\S:匹配任意不是空白的字符;

\d:匹配数字的字符,反义:\D:匹配任意非数字的字符;

\b:匹配单词的开始或结束,反义:\B:匹配不是单词的开始或结束的位置;

^:匹配字符串的开始,$:匹配字符串的结束;这里举个栗子:

上述栗子比较严格,意思就是匹配的数字不能少于5个也不能多余10个,关于中间的这个{},下面会讲到,此处就不讲了;

[^x]:匹配除了x以外的任意字符;[^aeiou]匹配除了aeiou(好像是元音吧)这几个字母以外的任意字符;

除了以上本菜还学到了常用的限定符(!!!∑(゚Д゚ノ)ノ感觉自己成道士了)

*:重复零次或更多次;+:重复一次或更多次;?:重复零次或一次;

{n}:重复n次;{n,}:重复n次或更多次;{n,m}:重复n到m次。

对了还有个转义字符\*(这里的*指的是其他字符),因为某些字符比如"."(这个英文下的小点,如果你想单纯的使用它的话就要用到转义字符,别问为什么不能直接用,不懂从头看。)用来这个转义字符后就可以消除这些字符自带的特殊意义,就连你想单纯用\,也得这样\\

再有就是这个替换:“|”(就是一条竖杆),替换是为了更准确的匹配字符,在正则表达式的替换指的是有几种规则,替换就是用“|”把不同规则分隔开来,避免一些不合理的错误出现;使用替换是,顺序很重要(使用替换是,顺序很重要;使用替换是,顺序很重要;重要的事情说三遍)。如身QQ号(假设一些一个7位,一个10位)如果\d{10}|\d{7}

这样就完全匹配到了,如果\d{7}|\d{10},如前面满足7位就不会继续匹配下去了,所以以本菜鸟的理解就是大前小后,简单来如果所有要匹配的都满足了第一个条件,那么它就不会去实行第二个条件(补充一下:一般匹配替换是都会从左到右进行匹配)。不理解?请看图

看到了没,正确的就是这样多余10位就匹配到第10个,少于10位就匹配到第七个,至于少于7位( ̄□ ̄||又忘写了)是不会匹配上的。

至于这个只要是够5个的,能匹配多少5个就匹配多少5个,多不行少不行,介样子\d{10}就成多余得了。

(呼~,一口气说完,好累)

本菜就会这么点,-_-||,还得继续努力!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值