正则表达式

本文深入探讨了正则表达式的概念和应用,包括字符类、数量限定符、位置限定字符等基本要素。通过实例解析了贪婪模式与非贪婪模式的差异,并介绍了零宽断言在文本匹配中的重要作用。正则表达式广泛应用于表单验证、信息查找和文本替换,是信息技术领域不可或缺的工具。
摘要由CSDN通过智能技术生成

概念

  • 用一些特殊的符号来匹配、查找、替换字符串文本
  • 通过特殊字符+普通字符来进行模式描述,进行文本匹配
应用场景

(1)验证:表单提交时,进行用户名密码的验证。

(2)查找:从大量信息中快速提取指定内容,在一批url中,查找指定url。

(3)替换:将指定格式的文本进行正则匹配查找,找到之后进行特定替换。

基本要素

字符类
字符说明
.匹配除换行符(\n)以外的任意字符
[]匹配[]中列举的字符[0123456789]
-在[]表示字符的范围[A-Za-z0-9]
数量限定符
字符说明
?紧跟在它前面的单元应匹配 0 次或 1 次
+紧跟在它前面的单元应匹配 1 次或多次
*紧跟在它前面的单元应匹配 0 次或多次
{n}紧跟在它前面的单元应匹配 n 次
{n,}紧跟在它前面的单元应至少匹配 n 次
{,m}紧跟在它前面的单元应最多匹配 m 次
{n,m}紧跟在它前面的单元应至少匹配 n 次,最多匹配m次
[0-9][0-9]*?\.[0-9][0-9]*
匹配代小数点的数字

1[356789]\d{9}
匹配手机号
位置限定字符
字符含义
^匹配以……开始的行^i
^[ipm]
[^im]
$匹配以……结束的行2$
\<匹配以……开头的单词
\>匹配以……结尾的单词
\b匹配不以……开头或结尾的单词
\B匹配以……开头或结尾的单词
^im   匹配im开头的字符串
^[im] 匹配i或m开头的字符串
[^im] 匹配非i或m开头的字符串
特殊符号
字符说明
\转义字符;普通字符转为特殊字符,特殊字符转为普通字符\*
()将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符
\1第一个()中的值
|连接两个子表达式,表示或关系
普通字符
字符说明
/w匹配大小写字母或数字或下划线或汉字0-9、a-z、A-Z、_(下划线)、汉字和其他国家的语言符号
/W匹配非字母或数字或下划线或汉字,跟\w正好相反
/s匹配任意的空白符
/S匹配任意非空白符
/d匹配数字
/DD 匹配非数字

贪婪模式与非贪婪模式

贪婪模式
  • 正则表达式匹配时,会尽量多的匹配符合条件的内容

注意:grep默认采用贪婪匹配,可能会对我们的测试结果造成干扰,大家可以上网使用“正则在线转换工具”进行测试

非贪婪模式
  • 正则表达式匹配时,会尽量少的匹配符合条件的内容,也就是说,一旦发现匹配符合要求,立马就匹配成功,而不会继续匹配下去(除非有g,开启下一组匹配)
*?+???{m,}?{m,n}?

零宽断言

断言
  • 是用来声明一个应该为真的事实。在正则表达式中,只有当断言为真时才会继续进行匹配。
零宽断言
  • 像用于查找某些内容之前或者之后的东西,其中一些特殊字符如“\b、^、$”等用于指定一个位置,这个位置应满足一定的条件。
零宽度正预测先行断言(?=exp)

它断言自身出现的位置之后能匹配的表达式exp。如:\b\w+(?=ing\b),表示匹配以ing结尾的单词的前面的部分(除ing以外的部分)。当我们要查找“I’m singing while you’re dancing.”时,它会匹配sing和danc

零宽度正回顾后发断言(?>=exp)

它断言自身出现的位置的前面能匹配的表达式exp。如:(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除er以外的部分),例如:在查找“reading a book”时,它匹配ading

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值