import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Main {
public static void main
(String[] args
) { String input
= "app=github env=production enterprise=true auth_fingerprint=\"token:6b29527b:9.99.999.99\" controller=\"Api::GitCommits\" path_info=\"/api/v3/repos/XYZ-ABCDE/abcdefg-abc/git/commits/77ae1376f969059f5f1e23cc5669bff8cca50563.diff\" query_string=nil version=v3 auth=oauth current_user=abcdefghijk oauth_access_id=24 oauth_application_id=0 oauth_scopes=\"gist,notifications,repo,user\" route=\"/repositories/:repository_id/git/commits/:id\" org=XYZ-ABCDE oauth_party=personal repo=XYZ-ABCDE/abcdefg-abc repo_visibility=private now=\"2015-09-24T13:44:52+00:00\" request_id=675fa67e-c1de-4bfa-a965-127b928d427a server_id=c31404fc-b7d0-41a1-8017-fc1a6dce8111 remote_address=9.99.999.99 request_method=get content_length=92 content_type=\"application/json; charset=utf-8\" user_agent=nil accept=application/json language=nil referer=nil x_requested_with=nil status=404 elapsed=0.041 url=\"https://g...content-available-to-author-only...c.com/api/v3/repos/XYZ-ABCDE/abcdefg-abc/git/commits/77ae1376f969059f5f1e23cc5669bff8cca50563.diff\" worker_request_count=77192 request_category=apiapp=github env=production enterprise=true auth_fingerprint=\"token:6b29527b:9.99.999.99\" controller=\"Api::GitCommits\" path_info=\"/api/v3/repos/XYZ-ABCDE/abcdefg-abc/git/commits/9bee255c7b13c589f4e9f1cb2d4ebb5b8519ba9c.diff\" query_string=nil version=v3 auth=oauth current_user=abcdefghijk oauth_access_id=24 oauth_application_id=0 oauth_scopes=\"gist,notifications,repo,user\" route=\"/repositories/:repository_id/git/commits/:id\" org=XYZ-ABCDE oauth_party=personal repo=XYZ-ABCDE/abcdefg-abc repo_visibility=private now=\"2015-09-24T13:44:52+00:00\" request_id=89fcb32e-9ab5-47f7-9464-e5f5cff175e8 server_id=1b74880a-5124-4483-adce-111b60dac111 remote_address=9.99.999.99 request_method=get content_length=92 content_type=\"application/json; charset=utf-8\" user_agent=nil accept=application/json language=nil referer=nil x_requested_with=nil status=404 elapsed=0.024 url=\"https://g...content-available-to-author-only...c.com/api/v3/repos/XYZ-ABCDE/abcdefg-abc/git/commits/9bee255c7b13c589f4e9f1cb2d4ebb5b8519ba9c.diff\" worker_request_count=76263 request_category=api"; input += "user_agent=nil accept=application/json language=nil referer=nil x_requested_with=nil status=404 elapsed=0.024" + " user_agent=nil accept=application/json language=nil referer=nil x_requested_with=nil status=404 elapsed=0.024";
String long_input
= input
+ " " + input
+ " " + input
+ " " + input
;
// sln
Pattern KEY_CAPTURE = Pattern.compile("(?s)app=github(?>\\s+user=(?<user>\\S+)|\\s+repo=(?<repo>\\S+)|\\s+remote_address=(?<ip>\\S+)|\\s+now=\\\\?\"(?<time>\\S+)\\+\\d\\d:\\d\\d\\\\?\"|\\s+url=\\\\?\"(?<url>\\S+)\\\\?\"|\\s+referer=\\\\?\"(?<referer>\\S+)\\\\?\"|\\s+status=(?<status>\\S+)|\\s+elapsed=(?<elapsed>\\S+)|\\s+request_method=(?<requestmethod>\\S+)|\\s+created_at=\\\\?\"(?<createdat>\\S+)[-+]\\d\\d:\\d\\d\\\\?\"|\\s+pull_request_id=(?<pullrequestid>\\d+)|\\s+at=(?<at>\\S+)|\\s+fn=(?<fn>\\S+)|\\s+method=(?<method>\\S+)|\\s+current_user=(?<user2>\\S+)|\\s+content_length=(?<contentlength>\\S+)|\\s+request_category=(?<requestcategory>\\S+)|\\s+controller=(?<controller>\\S+)|\\s+action=(?<action>\\S+)|\"[^\"]*\"|(?!app=github).)+");
Matcher matcher_Sln = KEY_CAPTURE.matcher(long_input);
System.
out.
println("Method SLN:"); if (matcher_Sln.find()) {
System.
out.
println(matcher_Sln.
group("user")); System.
out.
println(matcher_Sln.
group("repo")); System.
out.
println(matcher_Sln.
group("ip")); }
}
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLk1hcDsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CgoKY2xhc3MgTWFpbiB7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CglTdHJpbmcgaW5wdXQgPSAiYXBwPWdpdGh1YiBlbnY9cHJvZHVjdGlvbiBlbnRlcnByaXNlPXRydWUgYXV0aF9maW5nZXJwcmludD1cInRva2VuOjZiMjk1MjdiOjkuOTkuOTk5Ljk5XCIgY29udHJvbGxlcj1cIkFwaTo6R2l0Q29tbWl0c1wiIHBhdGhfaW5mbz1cIi9hcGkvdjMvcmVwb3MvWFlaLUFCQ0RFL2FiY2RlZmctYWJjL2dpdC9jb21taXRzLzc3YWUxMzc2Zjk2OTA1OWY1ZjFlMjNjYzU2NjliZmY4Y2NhNTA1NjMuZGlmZlwiIHF1ZXJ5X3N0cmluZz1uaWwgdmVyc2lvbj12MyBhdXRoPW9hdXRoIGN1cnJlbnRfdXNlcj1hYmNkZWZnaGlqayBvYXV0aF9hY2Nlc3NfaWQ9MjQgb2F1dGhfYXBwbGljYXRpb25faWQ9MCBvYXV0aF9zY29wZXM9XCJnaXN0LG5vdGlmaWNhdGlvbnMscmVwbyx1c2VyXCIgcm91dGU9XCIvcmVwb3NpdG9yaWVzLzpyZXBvc2l0b3J5X2lkL2dpdC9jb21taXRzLzppZFwiIG9yZz1YWVotQUJDREUgb2F1dGhfcGFydHk9cGVyc29uYWwgcmVwbz1YWVotQUJDREUvYWJjZGVmZy1hYmMgcmVwb192aXNpYmlsaXR5PXByaXZhdGUgbm93PVwiMjAxNS0wOS0yNFQxMzo0NDo1MiswMDowMFwiIHJlcXVlc3RfaWQ9Njc1ZmE2N2UtYzFkZS00YmZhLWE5NjUtMTI3YjkyOGQ0MjdhIHNlcnZlcl9pZD1jMzE0MDRmYy1iN2QwLTQxYTEtODAxNy1mYzFhNmRjZTgxMTEgcmVtb3RlX2FkZHJlc3M9OS45OS45OTkuOTkgcmVxdWVzdF9tZXRob2Q9Z2V0IGNvbnRlbnRfbGVuZ3RoPTkyIGNvbnRlbnRfdHlwZT1cImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLThcIiB1c2VyX2FnZW50PW5pbCBhY2NlcHQ9YXBwbGljYXRpb24vanNvbiBsYW5ndWFnZT1uaWwgcmVmZXJlcj1uaWwgeF9yZXF1ZXN0ZWRfd2l0aD1uaWwgc3RhdHVzPTQwNCBlbGFwc2VkPTAuMDQxIHVybD1cImh0dHBzOi8vZy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uYy5jb20vYXBpL3YzL3JlcG9zL1hZWi1BQkNERS9hYmNkZWZnLWFiYy9naXQvY29tbWl0cy83N2FlMTM3NmY5NjkwNTlmNWYxZTIzY2M1NjY5YmZmOGNjYTUwNTYzLmRpZmZcIiB3b3JrZXJfcmVxdWVzdF9jb3VudD03NzE5MiByZXF1ZXN0X2NhdGVnb3J5PWFwaWFwcD1naXRodWIgZW52PXByb2R1Y3Rpb24gZW50ZXJwcmlzZT10cnVlIGF1dGhfZmluZ2VycHJpbnQ9XCJ0b2tlbjo2YjI5NTI3Yjo5Ljk5Ljk5OS45OVwiIGNvbnRyb2xsZXI9XCJBcGk6OkdpdENvbW1pdHNcIiBwYXRoX2luZm89XCIvYXBpL3YzL3JlcG9zL1hZWi1BQkNERS9hYmNkZWZnLWFiYy9naXQvY29tbWl0cy85YmVlMjU1YzdiMTNjNTg5ZjRlOWYxY2IyZDRlYmI1Yjg1MTliYTljLmRpZmZcIiBxdWVyeV9zdHJpbmc9bmlsIHZlcnNpb249djMgYXV0aD1vYXV0aCBjdXJyZW50X3VzZXI9YWJjZGVmZ2hpamsgb2F1dGhfYWNjZXNzX2lkPTI0IG9hdXRoX2FwcGxpY2F0aW9uX2lkPTAgb2F1dGhfc2NvcGVzPVwiZ2lzdCxub3RpZmljYXRpb25zLHJlcG8sdXNlclwiIHJvdXRlPVwiL3JlcG9zaXRvcmllcy86cmVwb3NpdG9yeV9pZC9naXQvY29tbWl0cy86aWRcIiBvcmc9WFlaLUFCQ0RFIG9hdXRoX3BhcnR5PXBlcnNvbmFsIHJlcG89WFlaLUFCQ0RFL2FiY2RlZmctYWJjIHJlcG9fdmlzaWJpbGl0eT1wcml2YXRlIG5vdz1cIjIwMTUtMDktMjRUMTM6NDQ6NTIrMDA6MDBcIiByZXF1ZXN0X2lkPTg5ZmNiMzJlLTlhYjUtNDdmNy05NDY0LWU1ZjVjZmYxNzVlOCBzZXJ2ZXJfaWQ9MWI3NDg4MGEtNTEyNC00NDgzLWFkY2UtMTExYjYwZGFjMTExIHJlbW90ZV9hZGRyZXNzPTkuOTkuOTk5Ljk5IHJlcXVlc3RfbWV0aG9kPWdldCBjb250ZW50X2xlbmd0aD05MiBjb250ZW50X3R5cGU9XCJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04XCIgdXNlcl9hZ2VudD1uaWwgYWNjZXB0PWFwcGxpY2F0aW9uL2pzb24gbGFuZ3VhZ2U9bmlsIHJlZmVyZXI9bmlsIHhfcmVxdWVzdGVkX3dpdGg9bmlsIHN0YXR1cz00MDQgZWxhcHNlZD0wLjAyNCB1cmw9XCJodHRwczovL2cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmMuY29tL2FwaS92My9yZXBvcy9YWVotQUJDREUvYWJjZGVmZy1hYmMvZ2l0L2NvbW1pdHMvOWJlZTI1NWM3YjEzYzU4OWY0ZTlmMWNiMmQ0ZWJiNWI4NTE5YmE5Yy5kaWZmXCIgd29ya2VyX3JlcXVlc3RfY291bnQ9NzYyNjMgcmVxdWVzdF9jYXRlZ29yeT1hcGkiOwoJCWlucHV0ICs9ICJ1c2VyX2FnZW50PW5pbCBhY2NlcHQ9YXBwbGljYXRpb24vanNvbiBsYW5ndWFnZT1uaWwgcmVmZXJlcj1uaWwgeF9yZXF1ZXN0ZWRfd2l0aD1uaWwgc3RhdHVzPTQwNCBlbGFwc2VkPTAuMDI0IiArICIgdXNlcl9hZ2VudD1uaWwgYWNjZXB0PWFwcGxpY2F0aW9uL2pzb24gbGFuZ3VhZ2U9bmlsIHJlZmVyZXI9bmlsIHhfcmVxdWVzdGVkX3dpdGg9bmlsIHN0YXR1cz00MDQgZWxhcHNlZD0wLjAyNCI7CgkJCgkJU3RyaW5nIGxvbmdfaW5wdXQgPSBpbnB1dCArICIgIiArIGlucHV0ICsgIiAiICsgaW5wdXQgKyAiICIgKyBpbnB1dDsKCQkKCQkvLyBzbG4KCQlQYXR0ZXJuIEtFWV9DQVBUVVJFID0gUGF0dGVybi5jb21waWxlKCIoP3MpYXBwPWdpdGh1Yig/Plxccyt1c2VyPSg/PHVzZXI+XFxTKyl8XFxzK3JlcG89KD88cmVwbz5cXFMrKXxcXHMrcmVtb3RlX2FkZHJlc3M9KD88aXA+XFxTKyl8XFxzK25vdz1cXFxcP1wiKD88dGltZT5cXFMrKVxcK1xcZFxcZDpcXGRcXGRcXFxcP1wifFxccyt1cmw9XFxcXD9cIig/PHVybD5cXFMrKVxcXFw/XCJ8XFxzK3JlZmVyZXI9XFxcXD9cIig/PHJlZmVyZXI+XFxTKylcXFxcP1wifFxccytzdGF0dXM9KD88c3RhdHVzPlxcUyspfFxccytlbGFwc2VkPSg/PGVsYXBzZWQ+XFxTKyl8XFxzK3JlcXVlc3RfbWV0aG9kPSg/PHJlcXVlc3RtZXRob2Q+XFxTKyl8XFxzK2NyZWF0ZWRfYXQ9XFxcXD9cIig/PGNyZWF0ZWRhdD5cXFMrKVstK11cXGRcXGQ6XFxkXFxkXFxcXD9cInxcXHMrcHVsbF9yZXF1ZXN0X2lkPSg/PHB1bGxyZXF1ZXN0aWQ+XFxkKyl8XFxzK2F0PSg/PGF0PlxcUyspfFxccytmbj0oPzxmbj5cXFMrKXxcXHMrbWV0aG9kPSg/PG1ldGhvZD5cXFMrKXxcXHMrY3VycmVudF91c2VyPSg/PHVzZXIyPlxcUyspfFxccytjb250ZW50X2xlbmd0aD0oPzxjb250ZW50bGVuZ3RoPlxcUyspfFxccytyZXF1ZXN0X2NhdGVnb3J5PSg/PHJlcXVlc3RjYXRlZ29yeT5cXFMrKXxcXHMrY29udHJvbGxlcj0oPzxjb250cm9sbGVyPlxcUyspfFxccythY3Rpb249KD88YWN0aW9uPlxcUyspfFwiW15cIl0qXCJ8KD8hYXBwPWdpdGh1YikuKSsiKTsKCQkKCQlNYXRjaGVyIG1hdGNoZXJfU2xuID0gS0VZX0NBUFRVUkUubWF0Y2hlcihsb25nX2lucHV0KTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIk1ldGhvZCBTTE46Iik7CgkJaWYgKG1hdGNoZXJfU2xuLmZpbmQoKSkgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4obWF0Y2hlcl9TbG4uZ3JvdXAoInVzZXIiKSk7CgkJCVN5c3RlbS5vdXQucHJpbnRsbihtYXRjaGVyX1Nsbi5ncm91cCgicmVwbyIpKTsKCQkJU3lzdGVtLm91dC5wcmludGxuKG1hdGNoZXJfU2xuLmdyb3VwKCJpcCIpKTsKCQl9CgkJU3lzdGVtLm91dC5wcmludGxuKCk7Cgl9Cgp9Cg==