正则表达式的原理&应用

正则表达式,又被称为规则表达式,英文名:Regular Expression。在我们所书写的代码中通常被简写为regexregexpRE,正则一般被用来检索以及替换某些符合规则的文本内容。通俗的讲:它可以用于对文本内容进行匹配的一种工具。

举个例子:我需要运用正则在以下字符串内容中匹配出was,该怎么做呢?
whatwhenwhywherewaswhowin
若要精确的匹配出was,正则表达式是这样的:\bwas\b
在这里插入图片描述
首先,\b是正则中规定的一种特殊的代码,它作用是匹配单词的开头或结尾的分界处的字符串且只匹配一个位置,我们可以将这类特殊代码叫做元字符。元字符并不单单只有一种,各种元字符的作用各不相同:
① . (点) 匹配除换行符以外的任意字符;②\w 匹配数字或字母或下划线或汉字;
③\s 匹配任意的空白符;④\d 匹配数字;⑤\b 匹配单词的开始或结束;
⑥^ 匹配字符串的开始;⑦$ 匹配字符串的结束

值得一提的是,大写形式的元字符如:\W \B…等,匹配文本的结果和小写元字符匹配的内容完全相反,小w匹配的是数字、字母、下划线,那么大W匹配的就是除数字、字母、下划线外的任意字符。我们通常将这类元字符统称为反义字符。除了大写的元字符外,还有些常用的反义字符,如:
①[^x] 匹配除了x以外的任意字符;② [^aeiou] 匹配除了aeiou这几个字母以外的任意字符;③ [^a-z] 匹配除了小写字母以外的任意字符;

若要查找元字符本身,如查找b、w,这种情况下你没法成功指定,因为b、w会被正则解释成其他的意思。这时的解决方法是使用 \ (反斜杠,在正则中的作用为字符转义),以此来取消b、w字符中的特殊属性:\\b,\\w,要查找反斜杠本身的话也是一样:\
在这里插入图片描述
正则中除了元字符这类特殊代码外,还有一种名为限定符的代码。限定符用于限制正则匹配文本内容的所用次数,避免重复多次相同的匹配,如:
① * 重复零次或更多次;② + 重复一次或更多次;③ ? 重复零次或一次;
④ {n} 重复n次;⑤ {n,} 重复n次或更多次;⑥ {n,m} 重复n到m次;
举例:如何匹配下列字符串A-G的大写字符?

字符串:每个A i选项前D面加上单选o题难度:一般使s n用单位f:高教保P卫学会题L序。
正则表达式:{A-G},单凭着一小块便可以将字符串中的大写字符匹配。

在正则中存在一些有趣的特性:“贪婪 & 懒惰”。相当于是正则中的两种模式,默认开启的模式是“贪婪”(在匹配符合规则的字符串时,尽可能的匹配多的字符),相比于“贪婪”,我们可能更需要开启“懒惰”(尽可能少匹配字符),前面所介绍的限定符都可以被转化为“懒惰”匹配模式。我们所需要做的只是在限定符的后面再加上个问号(?),便可以成功转换模式,如:
* ? 重复零次或更多次,但尽可能少重复;
② +? 重复一次或更多次,但尽可能少重复;

在正文开头说过,正则表达式的作用除了匹配相对应的字符,还能对匹配出的字符进行替换,可以使用$1 & $2…来引用对应分组的值。举例:写一个正则表达式用于匹配以下几种格式的电话号码。

(010)88886666,或022-22334455,或02912345678

正则:(0\d{2}[)]\d{8}|0\d{2}[- ]?\d{8};
值得注意的是,在使用替换时,代码的顺序是很重要的,正则在匹配替换时将会从左到右地去测试每个分枝的条件,若满足了某个分枝的话,其他的替换条件就不会去管了的。

最后要介绍的是正则中的位置指定符负向位置指定符,可以通过指定符来指定匹配的字符的位置,从何处开始匹配,从何处结束匹配。指定符:
①(?=exp) 匹配exp前的位置;②(?<=exp) 匹配exp后的位置;
③(?<!exp) 匹配前面不是exp的位置;④(?!exp) 匹配后面不是exp的位置;

举例:请在以下字符串中匹配出onload元素中的内容,包括onload,以及时间后缀,
字符串:<img οnlοad=“AutoResizeImage(200,200,this)“src=”/Document/Title/Temp/2017-12-114bc5.png”>;
正则:onload.+(?=src);(?<=Document/Title/Temp/).+(?=");
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值