正则表达式

正则表达式是通配符的增强版,可以匹配指定规则的字符串。可以通过在线测试工具来测试。

一 限定符

  • ?前面的字符需要出现0次或一次

  • *前面的字符可以出现0次或多次

    例ab*c代表ac之间可以出现0次或多次b,但不能有其他字符

  • +前面的字符需要出现多次

  • {}可以指定前面的字符出现的次数,例ab{6}c

    • {}也可以指定出现次数的范围,例ab{2,6}c

    • {}也可以指定至少几次,例ab{2,}c

注:()可以匹配多个字符,例(ab)+

二 "或"运算

  • |为或运算符,例a (cat|dog)会匹配a cat和a dog

三 字符类

  • []代表所匹配的字符必须取自[]中,即[ab]等同于a

    • []中也可以写范围,a-z,A-Z,0-9

    • [a-zA-Z0-9]代表所有字母和数字

  • 脱字符(^)代表除[]内列的以外的字符

五 元字符

  • \d代表数字字符,等同于[0,9]

  • \w代表"单词"字符,包括所有英文字符,数字字符和下划线

  • \s代表空白符(包括Tab和换行符)

  • \D代表非数字字符,\W代表非单词字符,\S代表非空白字符

  • .代表除了换行符的任意字符

  • ^会匹配行首,$会匹配行尾

    例,^a只会匹配行首的a,b$只会匹配行尾的b

六 贪婪与懒惰匹配

<span>This is a test</span>

这种情况我们想要匹配标签,很容易会想到<.+>,但是这样整行都会被匹配,原因是.+会尽可能多的匹配字符,解决办法就是改成<.+?>,它会将正则表达式中默认的贪婪匹配改成懒惰匹配。

七 分组

由括号括起来即成为一组。

比如(\d{1,3}\.){3}\d{1,3}是匹配ip

八 后向引用

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

比如\b(\w+)\b\s+\1\b可以用来匹配重复的单词。

九 零宽断言

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

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

十 负向零宽断言

零宽度负预测先行断言(?!exp),断言此位置的后面不能匹配表达式exp。例如:\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字;\b((?!abc)\w)+\b匹配不包含连续字符串abc的单词。

同理,我们可以用(?<!exp),零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp:(?<![a-z])\d{7}匹配前面不是小写字母的七位数字。

其他

  • \b可以代表单词字符的边界
  • \.反斜杠作为转义,表示.
  • 注释:(?#comment)

参考正则表达式30分钟入门教程正则表达式语言 - 快速参考 | Microsoft Docs

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值