正则表达式忽略前x个字符,然后匹配模式

时间:2018-03-30 06:38:49

标签: regex

String = '11111111111110000000000000000000110000000000000011111111111111111111111111111111110011111111111110000011110000011111111111110000000000011111111111111111010001111111111111111111110011111111111111111111111111110111112111121111111111111111111000011000001011111111111101022111101111001111111111110000001000000111111111111111000000000000011111111111111100011111111001011111111100000000000000000000000000000000100111001000000000000000000011000000000000001111111000000000000000000000000000000000001111100000000000000000000011000000000000000000000010000000000333333333'

我希望一个模式在前100个之后取10个字符,所以我想要100 - 110然后我想比较那个并查看长度为10的字符串是否连续有4个零。

如何只使用正则表达式执行此操作?我之前一直在使用子字符串。

2 个答案:

答案 0 :(得分:3)

你可以用这个:

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

说明:

  • ^:匹配字符串的开头,以避免在输入的任何位置使用该模式
  • .{100}:匹配100个字符
  • (?= ):展望未来。这不会捕获,只是验证仍然领先的东西。
  • .{0,6}:0到6个字符
  • 0000:字面意思是4个零
  • (.{10}):10个字符,这一次被捕获,可以使用\1$1引用,具体取决于正则表达式的风格。

答案 1 :(得分:0)

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

(?<=.{100})

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

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

您可以对其进行测试here