正则表达式

正则表达式

标准字符集合

  • \d :任意一个数字。0~9中的任意一个 (\D相反)
  • \w : 任意一个字母、数字或者下划线(\W取反)
  • \s : 空白符(制表符、空格符、换行符)
  • . : 任意一个字符(换行符除外)[\s\S]可以表示任意字符

自定义字符集合

  • [] :表示单个字符。例:[3-9]表示3到9之间任意一个数字
  • [^] : 上面的取反
  • [a-d[m-p]] :表示的是a到d并m到p,并集的意思。
  • [a-z&&[def]] :表示的是a到z与def的交集,也就是def

这里特殊符号放于中括号中失去意义(’^’,’-'除外)

例:[\d.+]表示的是数字,小数点,+

量词:修饰匹配次数的符号(修饰前一个字符)

  • {n} : 表示重复n次
  • {n,m} : 表示重复至少n次,至多m次
  • ?’ :代表0次或者1次 {0,1}
  • +’ :代表至少出现一次{1,}
  • ‘*****’ : 代表出现或者不出现{0,}

匹配模式

  1. 贪婪模式:匹配的字符越多越好(默认是这种模式)

    例:文本:1234 345324

    正则表达式:\d{2-6}其匹配结果是:1234 345324

    为什么不是12 34 34 53 24?这就是贪婪模式按最大限度的匹配

  2. 非贪婪模式:匹配的字符越少越好。表达方式’{}’ 后面加一个’?’。

字符边界:匹配的是位置而不是字符

  • ^ : 表示字符串开始的地方匹配

  • $ : 表示字符串结束的地方匹配

  • \b :匹配一个单词的边界(前面的字符和后面的字符不全是\w(表示字符、数字或者下划线))

    例:文本:abc abc123 222abc

    正则表达式:abc 匹配结果:abc abc123 222abc(粗线部分)

    正则表达式:abc\b 匹配结果:abc abc123 222abc

    解析:第一个abc(c的前面是b 可以用\w表示 后面是空格 不可以用\w表示)其他同理

选择符和分组

  • | :左右两边表达式"或"关系,匹配左边和右边
  • () :将括号中的内容捕获
    • 在被修饰匹配次数的时候,()中的表达式可作为整体被修饰
    • 取匹配结果的时候,()中的表达式匹配到的内容看单独被得到
    • 每一对()都会被分配一个编号,从左括号开始编号从1开始

反向引用\nnn

  • 每一对()会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号
  • 通过反向引用,可以对分组已捕获的字符串进行引用

例: 文本: dodo todo doto gigi

正则表达式:([a-z]{2})\1 匹配结果 dodo gigi

解析:括号中的表达式表示的是:任意两个从a到z的字母,用括号将匹配的结果捕获到,先保存。这个括号的编号是1,再通过反向引用\1 引用捕获的内容。所以整个表达式:两个字符串在重复一次。

零宽断言—对位置的匹配

只进行与表达式的匹配,匹配内容不计入最终的匹配结果。

判断当前位置的前后字符是否符合指定的条件。

  • (?=exp) : 断言自身出现的位置的后面能匹配表达式exp
  • (?<=exp) : 断言自身出现的位置的前面能匹配表达式exp
  • (?!exp) :断言自身出现的位置的后面不能匹配表达式exp
  • (?<!exp) : 断言自身出现的位置的前面不能匹配表达式exp

例: 文本 going12 eating2 doing3

正则表达式:[a-z] (?=\d+) 表示以任意数字结尾的单词

匹配结果:going eating doing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值