re = /AAAAA(?!\"id\":\"[^"]*\").*?(\"id\":\"[^"]*\")|(?<!^)\G(?!\"id\":\"[^"]*\").*?(\"id\":\"[^"]*\")(?=.*ZZZZZ)/
str = '[]}6778:---esghsrth"id":"95907bc09-568976456-c6a5a-4f87g"[]}6778:---AAAAA{[]}bla...esghshrth"id":"95907bc09-568976456-c6a5a-4f87g"[]}6778:---esghsrth"id":"95907bc09-568976456-c6a5a-4f87g"[]}6778:---esghsrth"id":"95907bc09-568976456-c6a5a-4f87g"[]}6778:---esghsrth"id":"95907bc09-568976456-c6a5a-4f87g"[]}6778:---esghsrth"id":"95907bc09-568976456-c6a5a-4f87g"[]}6778:---esghsrth"id":"95907bc09-568976456-c6a5a-4f87g"[]}6778:---esghsrth"id":"95907bc09-568976456-c6a5a-4f87g"[]}6778:---ZZZZZ[]}6778:---esghsrth"id":"95907bc09-568976456-c6a5a-4f87g"[]}6778:---
Simplified version:
AAAAA(?!id).*?(id)|(?<!^)\\G(?!id).*?(id)(?=.*ZZZZZ)
Full version (id => \\"id\\":\\"[^"]*\\")
AAAAA(?!\\"id\\":\\"[^"]*\\").*?(\\"id\\":\\"[^"]*\\")|(?<!^)\\G(?!\\"id\\":\\"[^"]*\\").*?(\\"id\\":\\"[^"]*\\")(?=.*ZZZZZ)'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html