正则表达式中(pattern)\num的用法

今天在写算法题的时候碰到的一个这样的正则表达式

<([A-Z]{1,9})>[^<]*</\1>

在翻看了多次正则表达式的匹配规则后终于弄明白了

 

 对 <DIV>This is the first line -</DIV> 这个字符串匹配,可以匹配到这整个字符串

[A-Z]{1-9}很简单,就是匹配大写字母1-9次,即匹配一个1-9大小的大写字母字符串,外边加个()也很容易理解,就是获得括号中匹配到的字符串

(pattern)

匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到。要匹配圆括号字符,请使用 '\(' 或 '\)'。

所以<([A-Z]{1,9})>就是匹配到<DIV>,

[^<]*即匹配不包含“<”的任意字符

[^xyz]

负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'、'l'、'i'、'n'。

而“\1”则是根据这个规则来匹配     
\num

匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。

 即“\1”在这里匹配了前边括号中获得的匹配“DIV” (pattern)会生成一个Matches 集合

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值