正则表达式基础

1、反义字符
先来讲一下字符的转义,如果你想查询一些符号,却刚好就是一些字符的符号,这个时候正则表达式会误以为是元字符或者是限定符之类的符号,你指定不了它,因为他们会被正则表达式解释成了其他的意思。这个时候你就要在符号的前面加一个\来取消这些字符的特殊意义。所以,例如当你要使用.或者*类似的特殊符号的时候,你应该是.或者*这样的写法。如果要查询\本身的话,那你也得要用两个\。
在这里插入图片描述
有时候需要查找除了数字字符类以外的字符,这个时候就要用到反义字符:
\W(匹配任意本身字母,数字,下划线,汉字的字符)
\S(匹配任意不是空白符的字符) \D(匹配任意不是数字的字符)
\B(匹配不是单词开头或者结束的位置) [^x](匹配除了x以外的任意字符)
[^luck](匹配除了luck这几个字符以外的任意字符)
2、零宽断言
用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定条件(断言),因此他们被称为零宽断言。
(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=you\b),匹配以you结尾的单词的前面的位置,比如查找 I MISS you的时候,它会匹配I MISS。
(?<exp)也叫做零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp,比如(?<=\bre)\w+\b会匹配以bre开头的单词的后半部分,例如在查找reading a book的时候,它会匹配ading。
在这里插入图片描述
3、懒惰限定符
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。考虑这个表达式:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
*?(重复任意次,但尽量少重复)
+?(重复1次或者更多次,但尽量少重复)
??(重复0次或者1次,但尽量少重复)
{n,m}?(重复n到m次,但尽量少重复)
{n,}?(重复n次以上,但尽量少重复)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值