正则表达式

正则表达式

  正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。

  许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开来的,后来在广泛运用于Scala 、PHP、C# 、Java、C++ 、Objective-c、Perl 、Swift、VBScript 、Javascript、Ruby 以及Python等等。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

用法

符号作用
$匹配结束符号,例如表达式/abc$/g,匹配字符串abc是可以匹配上的,因为匹配完c后结束符号也匹配上了,如果匹配abcd,那么$就和d进行匹配,匹配失败
( )可以改变表达式的优先级,例如表达式/ab+/g,因为+号优先级高,所以这个表达式可以匹配ab、abb、abbb…,加了括号后/(ab)+/g,所匹配的就是ab、abab、abab…
*星号前的表达式可以重复匹配0次至无限次,例如表达式/ab*/g,可以匹配a、ab、abb、abbb…
+加号前的表达式可以重复匹配1次至无限次,例如表达式/ab+/g,可以匹配ab、abb、abbb…,但是不可以匹配a,因为+号至少匹配一次
[ ][]中括号可以限制匹配单个字符的字符集,例如 [0-9] 代表匹配的这个字符可以是0、1、2…9,也可以匹配多个种字符 [a-z0-9],代表匹配的这个字符可以是a-z也可以是0-9
??号前的表达式可以匹配0次或一次,例如表达式/ab?/g,只能匹配a和ab
\转义字符,如果需要匹配$()^{}等特殊符号,可以这样使用:\$、\(、\)、\^等等
^在正常表达式中,匹配开始字符,例如表达式/^abc/g匹配abc是可以匹配成功的,但是匹配dabc是匹配不成功的,因为a不是开始字符。在 [ ] 表达式中,^表示非的意思,例如 [^0-9] 代表匹配的这个字符不能是数字
{ }{ }是限制符号,可以在里面添加限制条件,下面{n}、{n,}详细介绍
|或者符号,例如 [a|b] 代表匹配的字符可以是a或者b
{n}可以重复匹配前面的表达式 n 次,例如/ab{2}/g,那么只能匹配abb
{n,}至少重复匹配前面的表达式 n 次,例如/ab{2,}/g,那么可以匹配abb、abbb、abbbb…
{n,m}重复匹配前面的表达式 n 到 m 次,例如/ab{2,4}/g,那么只可以匹配abb、abbb、abbbb
\n匹配一个换行符
\r匹配一个回车符
\t匹配一个制表符,tap符号
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v,匹配的字符只能是 \f、\n、\r、\t、\v这些字符。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v],^是非的意思,匹配的字符不能是 \f、\n、\r、\t、\v这些字符
\b匹配一个单词边界,即字与空格间的位置。例如/\bab/g,匹配gg abhab的时候,只能匹配成功第一个ab,而第二个匹配不成功,因为\b没有匹配到边界单词
\B非单词边界匹配,例如/\bab/g,匹配gg abhab的时候,只能匹配成功第二个ab,而第一个匹配不成功,因为\B没有匹配到非边界单词
exp1(?=exp2)查找 exp2 前面的 exp1
(?<=exp2)exp1查找 exp2 后面的 exp1
exp1(?!exp2)查找后面不是 exp2 的 exp1
(?<!exp2)exp1查找前面不是 exp2 的 exp1

个人理解

正则表达式在一定程度上可以方便开发,使用场景也是非常多的,例如使用linux命令查找文件,对文件内容进行查找、替换等操作,在开发判断参数的合法性等等,只需要使用简单的表达式就可以达到效果,而不需要额外去写程序

在这里插入图片描述

但对比于一些复杂的问题不建议使用正则表达式去解决,例如检验密码是否符合以下要求:
至少8位最多16位,至少出现三种类型的字符

如果要写正则表达式去匹配,是不太容易的,即使写出来,保证这个表达式的正确性又是很大的问题,除非熟练掌握了正则表达式

而用代码去实现的话,就非常容易实现,思路清晰,后期维护也简单

所以,不应该滥用正则表达式,使用正则表达式只是为了方便开发,如果使得开发变得复杂就得不偿失了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧林墨烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值