菜鸟理解的正则表达式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术: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}就成多余得了。
(呼~,一口气说完,好累)
本菜就会这么点,-_-||,还得继续努力!!