如何与附加条件匹配精确的5个字符?

  • 本文关键字:5个 字符 附加条件 regex
  • 更新时间 :
  • 英文 :


我需要匹配一组精确的5个字符1。在下面的示例

02011111020 // match
00211111200 // Not match because there are 2 at start and end of group
00111111100 // Not match because there are 6 1's
到目前为止,我已经尝试了模式
  • (?!2)(1{5}?)(?!2)00111111100失败
  • D(1{5}?)D,但02011111020失效

这个条件(?!2)总是为真,因为下一个匹配的字符是1,这个条件(?!2)断言不是2,如果右边还有一个1,它将为真。

D表示匹配数字以外的字符,该字符在只有数字的字符串中永远无法匹配。

您可以使用字符类[12]和遍寻来排除匹配1和2:

(?<![12])1{5}(?![12])

模式匹配:

  • (?<![12])负向后看,断言左边不是1或2
  • 1{5}匹配5次1
  • (?![12])负向前看,断言不是1或2向右

Regex演示

接受的答案很好地使用了遍历。使用相同的技术,下面给出的是一个更简单的解决方案:

(?<=0)1{5}(?=0)

模式匹配:

  • (?<=0)正向后看,左置0
  • 1{5}匹配5次1
  • (?=0)正向前看,断言0到右边

Regex演示

匹配连续5个1的行,0前后依次为:

.*01{5}0.*

最新更新