Regex忽略前x个字符,然后匹配模式

niwlg2el  于 2023-05-08  发布在  其他
关注(0)|答案(2)|浏览(161)
String = '11111111111110000000000000000000110000000000000011111111111111111111111111111111110011111111111110000011110000011111111111110000000000011111111111111111010001111111111111111111110011111111111111111111111111110111112111121111111111111111111000011000001011111111111101022111101111001111111111110000001000000111111111111111000000000000011111111111111100011111111001011111111100000000000000000000000000000000100111001000000000000000000011000000000000001111111000000000000000000000000000000000001111100000000000000000000011000000000000000000000010000000000333333333'

我想要一个模式,在前100个字符之后取出10个字符,所以我想有100 - 110,然后我想比较那个字符串,看看长度为10的字符串是否有4个零。
我怎么能只使用Regex呢?我以前用过substring。

ndasle7k

ndasle7k1#

你可以使用这个:

^.{100}(?=.{0,6}0000)(.{10})

说明:

  • ^:匹配字符串的开头,以避免在输入中的任何地方使用该模式
  • .{100}:匹配100个字符
  • (?= ):向前看。这并没有捕获,而只是验证了仍然在前面的东西。
  • .{0,6}:0到6个字符
  • 0000:4个零
  • (.{10}):10个字符,这一次它们被捕获,并可以根据正则表达式的风格使用\1$1进行引用。
igetnqfo

igetnqfo2#

上面的答案是完美的。但它匹配所有字符包括前100个。如果忽略前100个,我们可以使用

(?<=.{100})

要只检查前100个字符后的最后10个字符中所需的模式,我们可以使用

(?<=.{100})(?=.{0,6}0000)(.{10})

相关问题