加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式基础

发布时间:2020-12-13 23:06:44 所属栏目:百科 来源:网络整理
导读:什么是正则表达式:在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。 正则表达式 就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 入门 :比如你想查找hi这个词,你可以使用正则表达式hi,这是最

什么是正则表达式:在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。

入门:比如你想查找hi这个词,你可以使用正则表达式hi,这是最简单的表达式了,但很不幸,很多单词包含hi这两个连续的字符,比如him,history。如果要精确地表达hi的话,我们应该使用bhib,b是一个特殊的字符,称为元字符,是单词的分界处,代表开头或结尾。如果想在hi后面加个lucy可以用bhib.*blucyb,其中.代表除换行符以外的任意字符,*代表数量,它前面的字符可以重复任意次

基本的元字符:

所以电话号码的表示方法可以是:0dd-dddddddd,以0开头,然后是两位数字,然后是一个连接符,然后是8个数字,当然,为了避免那么多烦人的重复,我们可以引用重复表达式{n},其中n代表重复前面的值n次,号码格式可以表示为0d{2}-d{8},还有其他表示重复的元字符。

重复:


如d{5,12}匹配5到12个数字,一般用来检验密码

字符转义:

如果你想查找元字符本身,比如你查找.或*就出现了问题,你没办法指定他们,因为他们会被解释为其他意思,所以需要用到来取消这些字符的特殊意义。

字符类:

匹配数字、字母或数字、空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如a、e、i、o、u)怎么办呢

很简单,在方括号里列出他们就行了,像[aeiou]匹配任意一个英文元音字母,[.!?]匹配标点符号,[0-9]等同于d,[a-z0-9A-Z]等同于w的英文部分

分枝字符:

相当于或,符号是|,如0d{2}-d{8}|0d{3}-d{7},能匹配三位和四位区号的电话号码。

分组:

我们已经提到了怎么重复单个字符,但如果想要重复多个字符又该怎么办,你可以用小括号来指定子表达式,也叫分组,然后你就可以指定这个表达式的重复次数了,如(d{1,3}.){3}d{1,3}表示d{1,3}.重复三次,整个表达式是一个简单的ip地址匹配表达式

后向引用:

使用小括号指定一个表达式后,匹配这个子表达式的文本(此分组捕获的文本)可以在后面做进一步处理,默认情况下每个小组会有一个组号,规则是:从左到右,以分组的左括号为标志,第一个出现的组号为1,第二个出现的组号为2,以此类推。

后向引用用于重复搜索前面某个分组匹配的文本,例如,1代表分组1匹配的文本,如

b(w+)bs+1b可以用来匹配重复的单词,像go go,Kitty Kitty组号1捕获的文本(w+),隔了一个或多个或多个控告后又字符后又出现(w+).

你也可以指定子表达式的组名。语法:(?<word>w+)或(?'word'w+),这样就指定了表达式w+的名字为word

零宽断言

(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如bw+(?=ingb),匹配以ing结尾的单词的前面部分(除ing以外的部分),如查找 I'm singing while you're dancing.时,它会匹配sing和danc。

(?<=exp)也叫另宽度正回顾后发断言,它断言自身出现的的位置的前面能匹配表达式exp。比如(?<=bre)w+b会匹配以re开头的单词的后半部分(除re以外),例如查找reading a book时,它匹配ading。

解释(?<=<(w+)>).*(?=</1>),组号1的表达式(w+),前缀为<w+>,即<>里面是数字或字母;后缀</>里面的内容跟前缀括号里的内容一样,中间是任意表达式,刚好符合html标签,如<a> </a>,该表达式匹配的是html标签里面的内容

??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读