String = '11111111111110000000000000000000110000000000000011111111111111111111111111111111110011111111111110000011110000011111111111110000000000011111111111111111010001111111111111111111110011111111111111111111111111110111112111121111111111111111111000011000001011111111111101022111101111001111111111110000001000000111111111111111000000000000011111111111111100011111111001011111111100000000000000000000000000000000100111001000000000000000000011000000000000001111111000000000000000000000000000000000001111100000000000000000000011000000000000000000000010000000000333333333'
我希望一个模式在前100个之后取10个字符,所以我想要100 - 110然后我想比较那个并查看长度为10的字符串是否连续有4个零。
如何只使用正则表达式执行此操作?我之前一直在使用子字符串。
答案 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