From 84adefa331c4159d432d22840663c38f155cd4c1 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Fri, 20 Nov 2009 14:54:40 +0000 Subject: The R13B03 release. --- lib/stdlib/test/re_testoutput1_split_test.erl | 29418 ++++++++++++++++++++++++ 1 file changed, 29418 insertions(+) create mode 100644 lib/stdlib/test/re_testoutput1_split_test.erl (limited to 'lib/stdlib/test/re_testoutput1_split_test.erl') diff --git a/lib/stdlib/test/re_testoutput1_split_test.erl b/lib/stdlib/test/re_testoutput1_split_test.erl new file mode 100644 index 0000000000..7e2d3f79ec --- /dev/null +++ b/lib/stdlib/test/re_testoutput1_split_test.erl @@ -0,0 +1,29418 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +-module(re_testoutput1_split_test). +-compile(export_all). +-include("test_server.hrl"). +%% This file is generated by running run_pcre_tests:gen_split_test("re_SUITE_data/testoutput1") +join([]) -> []; +join([A]) -> [A]; +join([H|T]) -> [H,<<":">>|join(T)]. +run() -> +?line <<"">> = iolist_to_binary(join(re:split("the quick brown fox","the quick brown fox",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("the quick brown fox","the quick brown fox",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("the quick brown fox","the quick brown fox",[]))), +?line <<"The quick brown FOX">> = iolist_to_binary(join(re:split("The quick brown FOX","the quick brown fox",[trim]))), +?line <<"The quick brown FOX">> = iolist_to_binary(join(re:split("The quick brown FOX","the quick brown fox",[{parts, + 2}]))), +?line <<"The quick brown FOX">> = iolist_to_binary(join(re:split("The quick brown FOX","the quick brown fox",[]))), +?line <<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about the quick brown fox?","the quick brown fox",[trim]))), +?line <<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about the quick brown fox?","the quick brown fox",[{parts, + 2}]))), +?line <<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about the quick brown fox?","the quick brown fox",[]))), +?line <<"What do you know about THE QUICK BROWN FOX?">> = iolist_to_binary(join(re:split("What do you know about THE QUICK BROWN FOX?","the quick brown fox",[trim]))), +?line <<"What do you know about THE QUICK BROWN FOX?">> = iolist_to_binary(join(re:split("What do you know about THE QUICK BROWN FOX?","the quick brown fox",[{parts, + 2}]))), +?line <<"What do you know about THE QUICK BROWN FOX?">> = iolist_to_binary(join(re:split("What do you know about THE QUICK BROWN FOX?","the quick brown fox",[]))), +?line <<"">> = iolist_to_binary(join(re:split("the quick brown fox","The quick brown fox",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("the quick brown fox","The quick brown fox",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("the quick brown fox","The quick brown fox",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("The quick brown FOX","The quick brown fox",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("The quick brown FOX","The quick brown fox",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("The quick brown FOX","The quick brown fox",[caseless]))), +?line <<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about the quick brown fox?","The quick brown fox",[caseless, + trim]))), +?line <<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about the quick brown fox?","The quick brown fox",[caseless, + {parts, + 2}]))), +?line <<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about the quick brown fox?","The quick brown fox",[caseless]))), +?line <<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about THE QUICK BROWN FOX?","The quick brown fox",[caseless, + trim]))), +?line <<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about THE QUICK BROWN FOX?","The quick brown fox",[caseless, + {parts, + 2}]))), +?line <<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about THE QUICK BROWN FOX?","The quick brown fox",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("abcd + 9;$\\?caxyz","abcd\\t\\n\\r\\f\\a\\e\\071\\x3b\\$\\\\\\?caxyz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd + 9;$\\?caxyz","abcd\\t\\n\\r\\f\\a\\e\\071\\x3b\\$\\\\\\?caxyz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd + 9;$\\?caxyz","abcd\\t\\n\\r\\f\\a\\e\\071\\x3b\\$\\\\\\?caxyz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aabxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aabxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aabxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aabcxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aabcxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aabcxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABBzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABBzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABBzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<">>>">> = iolist_to_binary(join(re:split(">>>aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<">>>:">> = iolist_to_binary(join(re:split(">>>aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<">>>:">> = iolist_to_binary(join(re:split(">>>aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<">">> = iolist_to_binary(join(re:split(">aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<">:">> = iolist_to_binary(join(re:split(">aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<">:">> = iolist_to_binary(join(re:split(">aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<">>>>">> = iolist_to_binary(join(re:split(">>>>abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<">>>>:">> = iolist_to_binary(join(re:split(">>>>abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<">>>>:">> = iolist_to_binary(join(re:split(">>>>abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"abxyzpqrrabbxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<"abxyzpqrrabbxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<"abxyzpqrrabbxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"abxyzpqrrrrabbxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<"abxyzpqrrrrabbxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<"abxyzpqrrrrabbxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"abxyzpqrrrabxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrrabxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<"abxyzpqrrrabxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrrabxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<"abxyzpqrrrabxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrrabxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<"aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<"aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"aaaabcxyzzzzpqrrrabbbxyyypqAzz">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<"aaaabcxyzzzzpqrrrabbbxyyypqAzz">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<"aaaabcxyzzzzpqrrrabbbxyyypqAzz">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<"aaabcxyzpqrrrabbxyyyypqqqqqqqAzz">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))), +?line <<"aaabcxyzpqrrrabbxyyyypqqqqqqqAzz">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[{parts, + 2}]))), +?line <<"aaabcxyzpqrrrabbxyyyypqqqqqqqAzz">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abczz","^(abc){1,2}zz",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abczz","^(abc){1,2}zz",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abczz","^(abc){1,2}zz",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcabczz","^(abc){1,2}zz",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcabczz","^(abc){1,2}zz",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcabczz","^(abc){1,2}zz",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(abc){1,2}zz",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(abc){1,2}zz",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(abc){1,2}zz",[]))), +?line <<"zz">> = iolist_to_binary(join(re:split("zz","^(abc){1,2}zz",[trim]))), +?line <<"zz">> = iolist_to_binary(join(re:split("zz","^(abc){1,2}zz",[{parts, + 2}]))), +?line <<"zz">> = iolist_to_binary(join(re:split("zz","^(abc){1,2}zz",[]))), +?line <<"abcabcabczz">> = iolist_to_binary(join(re:split("abcabcabczz","^(abc){1,2}zz",[trim]))), +?line <<"abcabcabczz">> = iolist_to_binary(join(re:split("abcabcabczz","^(abc){1,2}zz",[{parts, + 2}]))), +?line <<"abcabcabczz">> = iolist_to_binary(join(re:split("abcabcabczz","^(abc){1,2}zz",[]))), +?line <<">>abczz">> = iolist_to_binary(join(re:split(">>abczz","^(abc){1,2}zz",[trim]))), +?line <<">>abczz">> = iolist_to_binary(join(re:split(">>abczz","^(abc){1,2}zz",[{parts, + 2}]))), +?line <<">>abczz">> = iolist_to_binary(join(re:split(">>abczz","^(abc){1,2}zz",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("bc","^(b+?|a){1,2}?c",[trim]))), +?line <<":b:">> = iolist_to_binary(join(re:split("bc","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("bc","^(b+?|a){1,2}?c",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("bbc","^(b+?|a){1,2}?c",[trim]))), +?line <<":b:">> = iolist_to_binary(join(re:split("bbc","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("bbc","^(b+?|a){1,2}?c",[]))), +?line <<":bb">> = iolist_to_binary(join(re:split("bbbc","^(b+?|a){1,2}?c",[trim]))), +?line <<":bb:">> = iolist_to_binary(join(re:split("bbbc","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":bb:">> = iolist_to_binary(join(re:split("bbbc","^(b+?|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aac","^(b+?|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aac","^(b+?|a){1,2}?c",[]))), +?line <<":bbbbbbbbbbb">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+?|a){1,2}?c",[trim]))), +?line <<":bbbbbbbbbbb:">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":bbbbbbbbbbb:">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+?|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+?|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+?|a){1,2}?c",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+?|a){1,2}?c",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+?|a){1,2}?c",[]))), +?line <<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+?|a){1,2}?c",[trim]))), +?line <<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+?|a){1,2}?c",[]))), +?line <<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+?|a){1,2}?c",[trim]))), +?line <<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+?|a){1,2}?c",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("bc","^(b+|a){1,2}c",[trim]))), +?line <<":b:">> = iolist_to_binary(join(re:split("bc","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("bc","^(b+|a){1,2}c",[]))), +?line <<":bb">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}c",[trim]))), +?line <<":bb:">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<":bb:">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}c",[]))), +?line <<":bbb">> = iolist_to_binary(join(re:split("bbbc","^(b+|a){1,2}c",[trim]))), +?line <<":bbb:">> = iolist_to_binary(join(re:split("bbbc","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<":bbb:">> = iolist_to_binary(join(re:split("bbbc","^(b+|a){1,2}c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aac","^(b+|a){1,2}c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aac","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aac","^(b+|a){1,2}c",[]))), +?line <<":bbbbbbbbbbb">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+|a){1,2}c",[trim]))), +?line <<":bbbbbbbbbbb:">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<":bbbbbbbbbbb:">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+|a){1,2}c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+|a){1,2}c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+|a){1,2}c",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+|a){1,2}c",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+|a){1,2}c",[]))), +?line <<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+|a){1,2}c",[trim]))), +?line <<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+|a){1,2}c",[]))), +?line <<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+|a){1,2}c",[trim]))), +?line <<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+|a){1,2}c",[{parts, + 2}]))), +?line <<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+|a){1,2}c",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}?bc",[trim]))), +?line <<":b:">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}?bc",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}?bc",[]))), +?line <<":ba">> = iolist_to_binary(join(re:split("babc","^(b*|ba){1,2}?bc",[trim]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("babc","^(b*|ba){1,2}?bc",[{parts, + 2}]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("babc","^(b*|ba){1,2}?bc",[]))), +?line <<":ba">> = iolist_to_binary(join(re:split("bbabc","^(b*|ba){1,2}?bc",[trim]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("bbabc","^(b*|ba){1,2}?bc",[{parts, + 2}]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("bbabc","^(b*|ba){1,2}?bc",[]))), +?line <<":ba">> = iolist_to_binary(join(re:split("bababc","^(b*|ba){1,2}?bc",[trim]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("bababc","^(b*|ba){1,2}?bc",[{parts, + 2}]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("bababc","^(b*|ba){1,2}?bc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b*|ba){1,2}?bc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b*|ba){1,2}?bc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b*|ba){1,2}?bc",[]))), +?line <<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(b*|ba){1,2}?bc",[trim]))), +?line <<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(b*|ba){1,2}?bc",[{parts, + 2}]))), +?line <<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(b*|ba){1,2}?bc",[]))), +?line <<"babababc">> = iolist_to_binary(join(re:split("babababc","^(b*|ba){1,2}?bc",[trim]))), +?line <<"babababc">> = iolist_to_binary(join(re:split("babababc","^(b*|ba){1,2}?bc",[{parts, + 2}]))), +?line <<"babababc">> = iolist_to_binary(join(re:split("babababc","^(b*|ba){1,2}?bc",[]))), +?line <<":ba">> = iolist_to_binary(join(re:split("babc","^(ba|b*){1,2}?bc",[trim]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("babc","^(ba|b*){1,2}?bc",[{parts, + 2}]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("babc","^(ba|b*){1,2}?bc",[]))), +?line <<":ba">> = iolist_to_binary(join(re:split("bbabc","^(ba|b*){1,2}?bc",[trim]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("bbabc","^(ba|b*){1,2}?bc",[{parts, + 2}]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("bbabc","^(ba|b*){1,2}?bc",[]))), +?line <<":ba">> = iolist_to_binary(join(re:split("bababc","^(ba|b*){1,2}?bc",[trim]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("bababc","^(ba|b*){1,2}?bc",[{parts, + 2}]))), +?line <<":ba:">> = iolist_to_binary(join(re:split("bababc","^(ba|b*){1,2}?bc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ba|b*){1,2}?bc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ba|b*){1,2}?bc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ba|b*){1,2}?bc",[]))), +?line <<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(ba|b*){1,2}?bc",[trim]))), +?line <<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(ba|b*){1,2}?bc",[{parts, + 2}]))), +?line <<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(ba|b*){1,2}?bc",[]))), +?line <<"babababc">> = iolist_to_binary(join(re:split("babababc","^(ba|b*){1,2}?bc",[trim]))), +?line <<"babababc">> = iolist_to_binary(join(re:split("babababc","^(ba|b*){1,2}?bc",[{parts, + 2}]))), +?line <<"babababc">> = iolist_to_binary(join(re:split("babababc","^(ba|b*){1,2}?bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split(";z","^\\ca\\cA\\c[\\c{\\c:",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split(";z","^\\ca\\cA\\c[\\c{\\c:",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split(";z","^\\ca\\cA\\c[\\c{\\c:",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("athing","^[ab\\]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("athing","^[ab\\]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("athing","^[ab\\]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("bthing","^[ab\\]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("bthing","^[ab\\]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("bthing","^[ab\\]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("]thing","^[ab\\]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("]thing","^[ab\\]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("]thing","^[ab\\]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("cthing","^[ab\\]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("cthing","^[ab\\]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("cthing","^[ab\\]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("dthing","^[ab\\]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("dthing","^[ab\\]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("dthing","^[ab\\]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("ething","^[ab\\]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("ething","^[ab\\]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("ething","^[ab\\]cde]",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[ab\\]cde]",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[ab\\]cde]",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[ab\\]cde]",[]))), +?line <<"fthing">> = iolist_to_binary(join(re:split("fthing","^[ab\\]cde]",[trim]))), +?line <<"fthing">> = iolist_to_binary(join(re:split("fthing","^[ab\\]cde]",[{parts, + 2}]))), +?line <<"fthing">> = iolist_to_binary(join(re:split("fthing","^[ab\\]cde]",[]))), +?line <<"[thing">> = iolist_to_binary(join(re:split("[thing","^[ab\\]cde]",[trim]))), +?line <<"[thing">> = iolist_to_binary(join(re:split("[thing","^[ab\\]cde]",[{parts, + 2}]))), +?line <<"[thing">> = iolist_to_binary(join(re:split("[thing","^[ab\\]cde]",[]))), +?line <<"\\thing">> = iolist_to_binary(join(re:split("\\thing","^[ab\\]cde]",[trim]))), +?line <<"\\thing">> = iolist_to_binary(join(re:split("\\thing","^[ab\\]cde]",[{parts, + 2}]))), +?line <<"\\thing">> = iolist_to_binary(join(re:split("\\thing","^[ab\\]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("]thing","^[]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("]thing","^[]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("]thing","^[]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("cthing","^[]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("cthing","^[]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("cthing","^[]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("dthing","^[]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("dthing","^[]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("dthing","^[]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("ething","^[]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("ething","^[]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("ething","^[]cde]",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[]cde]",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[]cde]",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[]cde]",[]))), +?line <<"athing">> = iolist_to_binary(join(re:split("athing","^[]cde]",[trim]))), +?line <<"athing">> = iolist_to_binary(join(re:split("athing","^[]cde]",[{parts, + 2}]))), +?line <<"athing">> = iolist_to_binary(join(re:split("athing","^[]cde]",[]))), +?line <<"fthing">> = iolist_to_binary(join(re:split("fthing","^[]cde]",[trim]))), +?line <<"fthing">> = iolist_to_binary(join(re:split("fthing","^[]cde]",[{parts, + 2}]))), +?line <<"fthing">> = iolist_to_binary(join(re:split("fthing","^[]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("fthing","^[^ab\\]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("fthing","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("fthing","^[^ab\\]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("[thing","^[^ab\\]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("[thing","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("[thing","^[^ab\\]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("\\thing","^[^ab\\]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("\\thing","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("\\thing","^[^ab\\]cde]",[]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^ab\\]cde]",[trim]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^ab\\]cde]",[]))), +?line <<"athing">> = iolist_to_binary(join(re:split("athing","^[^ab\\]cde]",[trim]))), +?line <<"athing">> = iolist_to_binary(join(re:split("athing","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<"athing">> = iolist_to_binary(join(re:split("athing","^[^ab\\]cde]",[]))), +?line <<"bthing">> = iolist_to_binary(join(re:split("bthing","^[^ab\\]cde]",[trim]))), +?line <<"bthing">> = iolist_to_binary(join(re:split("bthing","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<"bthing">> = iolist_to_binary(join(re:split("bthing","^[^ab\\]cde]",[]))), +?line <<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^ab\\]cde]",[trim]))), +?line <<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^ab\\]cde]",[]))), +?line <<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^ab\\]cde]",[trim]))), +?line <<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^ab\\]cde]",[]))), +?line <<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^ab\\]cde]",[trim]))), +?line <<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^ab\\]cde]",[]))), +?line <<"ething">> = iolist_to_binary(join(re:split("ething","^[^ab\\]cde]",[trim]))), +?line <<"ething">> = iolist_to_binary(join(re:split("ething","^[^ab\\]cde]",[{parts, + 2}]))), +?line <<"ething">> = iolist_to_binary(join(re:split("ething","^[^ab\\]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("athing","^[^]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("athing","^[^]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("athing","^[^]cde]",[]))), +?line <<":thing">> = iolist_to_binary(join(re:split("fthing","^[^]cde]",[trim]))), +?line <<":thing">> = iolist_to_binary(join(re:split("fthing","^[^]cde]",[{parts, + 2}]))), +?line <<":thing">> = iolist_to_binary(join(re:split("fthing","^[^]cde]",[]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^]cde]",[trim]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^]cde]",[{parts, + 2}]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^]cde]",[]))), +?line <<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^]cde]",[trim]))), +?line <<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^]cde]",[{parts, + 2}]))), +?line <<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^]cde]",[]))), +?line <<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^]cde]",[trim]))), +?line <<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^]cde]",[{parts, + 2}]))), +?line <<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^]cde]",[]))), +?line <<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^]cde]",[trim]))), +?line <<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^]cde]",[{parts, + 2}]))), +?line <<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^]cde]",[]))), +?line <<"ething">> = iolist_to_binary(join(re:split("ething","^[^]cde]",[trim]))), +?line <<"ething">> = iolist_to_binary(join(re:split("ething","^[^]cde]",[{parts, + 2}]))), +?line <<"ething">> = iolist_to_binary(join(re:split("ething","^[^]cde]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("","^\\",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("","^\\",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("","^\\",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ÿ","^ÿ",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ÿ","^ÿ",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ÿ","^ÿ",[]))), +?line <<"">> = iolist_to_binary(join(re:split("0","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("0","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("0","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("1","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("1","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("1","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("2","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("2","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("2","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("3","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("3","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("3","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("4","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("4","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("4","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("5","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("5","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("5","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("6","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("6","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("6","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("7","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("7","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("7","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("8","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("8","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("8","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("9","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("9","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("9","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("10","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("10","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("10","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("100","^[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("100","^[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("100","^[0-9]+$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[0-9]+$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[0-9]+$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[0-9]+$",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^[0-9]+$",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^[0-9]+$",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("enter","^.*nter",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("enter","^.*nter",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("enter","^.*nter",[]))), +?line <<"">> = iolist_to_binary(join(re:split("inter","^.*nter",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("inter","^.*nter",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("inter","^.*nter",[]))), +?line <<"">> = iolist_to_binary(join(re:split("uponter","^.*nter",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("uponter","^.*nter",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("uponter","^.*nter",[]))), +?line <<"">> = iolist_to_binary(join(re:split("xxx0","^xxx[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("xxx0","^xxx[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("xxx0","^xxx[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("xxx1234","^xxx[0-9]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("xxx1234","^xxx[0-9]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("xxx1234","^xxx[0-9]+$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^xxx[0-9]+$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^xxx[0-9]+$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^xxx[0-9]+$",[]))), +?line <<"xxx">> = iolist_to_binary(join(re:split("xxx","^xxx[0-9]+$",[trim]))), +?line <<"xxx">> = iolist_to_binary(join(re:split("xxx","^xxx[0-9]+$",[{parts, + 2}]))), +?line <<"xxx">> = iolist_to_binary(join(re:split("xxx","^xxx[0-9]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("x123","^.+[0-9][0-9][0-9]$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("x123","^.+[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("x123","^.+[0-9][0-9][0-9]$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("xx123","^.+[0-9][0-9][0-9]$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("xx123","^.+[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("xx123","^.+[0-9][0-9][0-9]$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("123456","^.+[0-9][0-9][0-9]$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("123456","^.+[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("123456","^.+[0-9][0-9][0-9]$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+[0-9][0-9][0-9]$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+[0-9][0-9][0-9]$",[]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^.+[0-9][0-9][0-9]$",[trim]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^.+[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^.+[0-9][0-9][0-9]$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("x1234","^.+[0-9][0-9][0-9]$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("x1234","^.+[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("x1234","^.+[0-9][0-9][0-9]$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("x123","^.+?[0-9][0-9][0-9]$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("x123","^.+?[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("x123","^.+?[0-9][0-9][0-9]$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("xx123","^.+?[0-9][0-9][0-9]$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("xx123","^.+?[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("xx123","^.+?[0-9][0-9][0-9]$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("123456","^.+?[0-9][0-9][0-9]$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("123456","^.+?[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("123456","^.+?[0-9][0-9][0-9]$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+?[0-9][0-9][0-9]$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+?[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+?[0-9][0-9][0-9]$",[]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^.+?[0-9][0-9][0-9]$",[trim]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^.+?[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^.+?[0-9][0-9][0-9]$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("x1234","^.+?[0-9][0-9][0-9]$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("x1234","^.+?[0-9][0-9][0-9]$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("x1234","^.+?[0-9][0-9][0-9]$",[]))), +?line <<":abc:pqr">> = iolist_to_binary(join(re:split("abc!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))), +?line <<":abc:pqr:">> = iolist_to_binary(join(re:split("abc!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[{parts, + 2}]))), +?line <<":abc:pqr:">> = iolist_to_binary(join(re:split("abc!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))), +?line <<"!pqr=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))), +?line <<"!pqr=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[{parts, + 2}]))), +?line <<"!pqr=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))), +?line <<"abc!=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("abc!=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))), +?line <<"abc!=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("abc!=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[{parts, + 2}]))), +?line <<"abc!=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("abc!=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))), +?line <<"abc!pqr=apquxz:ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("abc!pqr=apquxz:ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))), +?line <<"abc!pqr=apquxz:ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("abc!pqr=apquxz:ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[{parts, + 2}]))), +?line <<"abc!pqr=apquxz:ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("abc!pqr=apquxz:ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))), +?line <<"abc!pqr=apquxz.ixr.zzz.ac.ukk">> = iolist_to_binary(join(re:split("abc!pqr=apquxz.ixr.zzz.ac.ukk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))), +?line <<"abc!pqr=apquxz.ixr.zzz.ac.ukk">> = iolist_to_binary(join(re:split("abc!pqr=apquxz.ixr.zzz.ac.ukk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[{parts, + 2}]))), +?line <<"abc!pqr=apquxz.ixr.zzz.ac.ukk">> = iolist_to_binary(join(re:split("abc!pqr=apquxz.ixr.zzz.ac.ukk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))), +?line <<"Well, we need a colon: somewhere">> = iolist_to_binary(join(re:split("Well, we need a colon: somewhere",":",[trim]))), +?line <<"Well, we need a colon: somewhere">> = iolist_to_binary(join(re:split("Well, we need a colon: somewhere",":",[{parts, + 2}]))), +?line <<"Well, we need a colon: somewhere">> = iolist_to_binary(join(re:split("Well, we need a colon: somewhere",":",[]))), +?line <<"*** Fail if we don't">> = iolist_to_binary(join(re:split("*** Fail if we don't",":",[trim]))), +?line <<"*** Fail if we don't">> = iolist_to_binary(join(re:split("*** Fail if we don't",":",[{parts, + 2}]))), +?line <<"*** Fail if we don't">> = iolist_to_binary(join(re:split("*** Fail if we don't",":",[]))), +?line <<":0abc">> = iolist_to_binary(join(re:split("0abc","([\\da-f:]+)$",[caseless, + trim]))), +?line <<":0abc:">> = iolist_to_binary(join(re:split("0abc","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<":0abc:">> = iolist_to_binary(join(re:split("0abc","([\\da-f:]+)$",[caseless]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abc","([\\da-f:]+)$",[caseless, + trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc","([\\da-f:]+)$",[caseless]))), +?line <<":fed">> = iolist_to_binary(join(re:split("fed","([\\da-f:]+)$",[caseless, + trim]))), +?line <<":fed:">> = iolist_to_binary(join(re:split("fed","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<":fed:">> = iolist_to_binary(join(re:split("fed","([\\da-f:]+)$",[caseless]))), +?line <<":E">> = iolist_to_binary(join(re:split("E","([\\da-f:]+)$",[caseless, + trim]))), +?line <<":E:">> = iolist_to_binary(join(re:split("E","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<":E:">> = iolist_to_binary(join(re:split("E","([\\da-f:]+)$",[caseless]))), +?line <<":::">> = iolist_to_binary(join(re:split("::","([\\da-f:]+)$",[caseless, + trim]))), +?line <<"::::">> = iolist_to_binary(join(re:split("::","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<"::::">> = iolist_to_binary(join(re:split("::","([\\da-f:]+)$",[caseless]))), +?line <<":5f03:12C0::932e">> = iolist_to_binary(join(re:split("5f03:12C0::932e","([\\da-f:]+)$",[caseless, + trim]))), +?line <<":5f03:12C0::932e:">> = iolist_to_binary(join(re:split("5f03:12C0::932e","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<":5f03:12C0::932e:">> = iolist_to_binary(join(re:split("5f03:12C0::932e","([\\da-f:]+)$",[caseless]))), +?line <<"fed :def">> = iolist_to_binary(join(re:split("fed def","([\\da-f:]+)$",[caseless, + trim]))), +?line <<"fed :def:">> = iolist_to_binary(join(re:split("fed def","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<"fed :def:">> = iolist_to_binary(join(re:split("fed def","([\\da-f:]+)$",[caseless]))), +?line <<"Any old stu:ff">> = iolist_to_binary(join(re:split("Any old stuff","([\\da-f:]+)$",[caseless, + trim]))), +?line <<"Any old stu:ff:">> = iolist_to_binary(join(re:split("Any old stuff","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<"Any old stu:ff:">> = iolist_to_binary(join(re:split("Any old stuff","([\\da-f:]+)$",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","([\\da-f:]+)$",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","([\\da-f:]+)$",[caseless]))), +?line <<"0zzz">> = iolist_to_binary(join(re:split("0zzz","([\\da-f:]+)$",[caseless, + trim]))), +?line <<"0zzz">> = iolist_to_binary(join(re:split("0zzz","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<"0zzz">> = iolist_to_binary(join(re:split("0zzz","([\\da-f:]+)$",[caseless]))), +?line <<"gzzz">> = iolist_to_binary(join(re:split("gzzz","([\\da-f:]+)$",[caseless, + trim]))), +?line <<"gzzz">> = iolist_to_binary(join(re:split("gzzz","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<"gzzz">> = iolist_to_binary(join(re:split("gzzz","([\\da-f:]+)$",[caseless]))), +?line <<"fed ">> = iolist_to_binary(join(re:split("fed ","([\\da-f:]+)$",[caseless, + trim]))), +?line <<"fed ">> = iolist_to_binary(join(re:split("fed ","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<"fed ">> = iolist_to_binary(join(re:split("fed ","([\\da-f:]+)$",[caseless]))), +?line <<"Any old rubbish">> = iolist_to_binary(join(re:split("Any old rubbish","([\\da-f:]+)$",[caseless, + trim]))), +?line <<"Any old rubbish">> = iolist_to_binary(join(re:split("Any old rubbish","([\\da-f:]+)$",[caseless, + {parts, + 2}]))), +?line <<"Any old rubbish">> = iolist_to_binary(join(re:split("Any old rubbish","([\\da-f:]+)$",[caseless]))), +?line <<":1:2:3">> = iolist_to_binary(join(re:split(".1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))), +?line <<":1:2:3:">> = iolist_to_binary(join(re:split(".1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts, + 2}]))), +?line <<":1:2:3:">> = iolist_to_binary(join(re:split(".1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))), +?line <<":12:123:0">> = iolist_to_binary(join(re:split("A.12.123.0","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))), +?line <<":12:123:0:">> = iolist_to_binary(join(re:split("A.12.123.0","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts, + 2}]))), +?line <<":12:123:0:">> = iolist_to_binary(join(re:split("A.12.123.0","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))), +?line <<".1.2.3333">> = iolist_to_binary(join(re:split(".1.2.3333","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))), +?line <<".1.2.3333">> = iolist_to_binary(join(re:split(".1.2.3333","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts, + 2}]))), +?line <<".1.2.3333">> = iolist_to_binary(join(re:split(".1.2.3333","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))), +?line <<"1.2.3">> = iolist_to_binary(join(re:split("1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))), +?line <<"1.2.3">> = iolist_to_binary(join(re:split("1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts, + 2}]))), +?line <<"1.2.3">> = iolist_to_binary(join(re:split("1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))), +?line <<"1234.2.3">> = iolist_to_binary(join(re:split("1234.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))), +?line <<"1234.2.3">> = iolist_to_binary(join(re:split("1234.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts, + 2}]))), +?line <<"1234.2.3">> = iolist_to_binary(join(re:split("1234.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))), +?line <<":1:non-sp1:non-sp2">> = iolist_to_binary(join(re:split("1 IN SOA non-sp1 non-sp2(","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[trim]))), +?line <<":1:non-sp1:non-sp2:">> = iolist_to_binary(join(re:split("1 IN SOA non-sp1 non-sp2(","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[{parts, + 2}]))), +?line <<":1:non-sp1:non-sp2:">> = iolist_to_binary(join(re:split("1 IN SOA non-sp1 non-sp2(","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[]))), +?line <<":1:non-sp1:non-sp2">> = iolist_to_binary(join(re:split("1 IN SOA non-sp1 non-sp2 (","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[trim]))), +?line <<":1:non-sp1:non-sp2:">> = iolist_to_binary(join(re:split("1 IN SOA non-sp1 non-sp2 (","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[{parts, + 2}]))), +?line <<":1:non-sp1:non-sp2:">> = iolist_to_binary(join(re:split("1 IN SOA non-sp1 non-sp2 (","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[]))), +?line <<"1IN SOA non-sp1 non-sp2(">> = iolist_to_binary(join(re:split("1IN SOA non-sp1 non-sp2(","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[trim]))), +?line <<"1IN SOA non-sp1 non-sp2(">> = iolist_to_binary(join(re:split("1IN SOA non-sp1 non-sp2(","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[{parts, + 2}]))), +?line <<"1IN SOA non-sp1 non-sp2(">> = iolist_to_binary(join(re:split("1IN SOA non-sp1 non-sp2(","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Z.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("Z.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("Z.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("2.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("2.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("2.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))), +?line <<":.pq-r">> = iolist_to_binary(join(re:split("ab-c.pq-r.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))), +?line <<":.pq-r:">> = iolist_to_binary(join(re:split("ab-c.pq-r.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[{parts, + 2}]))), +?line <<":.pq-r:">> = iolist_to_binary(join(re:split("ab-c.pq-r.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))), +?line <<":.uk">> = iolist_to_binary(join(re:split("sxk.zzz.ac.uk.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))), +?line <<":.uk:">> = iolist_to_binary(join(re:split("sxk.zzz.ac.uk.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[{parts, + 2}]))), +?line <<":.uk:">> = iolist_to_binary(join(re:split("sxk.zzz.ac.uk.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))), +?line <<":.y-">> = iolist_to_binary(join(re:split("x-.y-.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))), +?line <<":.y-:">> = iolist_to_binary(join(re:split("x-.y-.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[{parts, + 2}]))), +?line <<":.y-:">> = iolist_to_binary(join(re:split("x-.y-.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))), +?line <<"-abc.peq.">> = iolist_to_binary(join(re:split("-abc.peq.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))), +?line <<"-abc.peq.">> = iolist_to_binary(join(re:split("-abc.peq.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[{parts, + 2}]))), +?line <<"-abc.peq.">> = iolist_to_binary(join(re:split("-abc.peq.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("*.a","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))), +?line <<"::::">> = iolist_to_binary(join(re:split("*.a","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[{parts, + 2}]))), +?line <<"::::">> = iolist_to_binary(join(re:split("*.a","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))), +?line <<":0-a">> = iolist_to_binary(join(re:split("*.b0-a","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))), +?line <<":0-a:::">> = iolist_to_binary(join(re:split("*.b0-a","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[{parts, + 2}]))), +?line <<":0-a:::">> = iolist_to_binary(join(re:split("*.b0-a","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))), +?line <<":3-b:.c">> = iolist_to_binary(join(re:split("*.c3-b.c","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))), +?line <<":3-b:.c::">> = iolist_to_binary(join(re:split("*.c3-b.c","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[{parts, + 2}]))), +?line <<":3-b:.c::">> = iolist_to_binary(join(re:split("*.c3-b.c","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))), +?line <<":-a:.b-c:-c">> = iolist_to_binary(join(re:split("*.c-a.b-c","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))), +?line <<":-a:.b-c:-c:">> = iolist_to_binary(join(re:split("*.c-a.b-c","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[{parts, + 2}]))), +?line <<":-a:.b-c:-c:">> = iolist_to_binary(join(re:split("*.c-a.b-c","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))), +?line <<"*.0">> = iolist_to_binary(join(re:split("*.0","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))), +?line <<"*.0">> = iolist_to_binary(join(re:split("*.0","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[{parts, + 2}]))), +?line <<"*.0">> = iolist_to_binary(join(re:split("*.0","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))), +?line <<"*.a-">> = iolist_to_binary(join(re:split("*.a-","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))), +?line <<"*.a-">> = iolist_to_binary(join(re:split("*.a-","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[{parts, + 2}]))), +?line <<"*.a-">> = iolist_to_binary(join(re:split("*.a-","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))), +?line <<"*.a-b.c-">> = iolist_to_binary(join(re:split("*.a-b.c-","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))), +?line <<"*.a-b.c-">> = iolist_to_binary(join(re:split("*.a-b.c-","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[{parts, + 2}]))), +?line <<"*.a-b.c-">> = iolist_to_binary(join(re:split("*.a-b.c-","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))), +?line <<"*.c-a.0-c">> = iolist_to_binary(join(re:split("*.c-a.0-c","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))), +?line <<"*.c-a.0-c">> = iolist_to_binary(join(re:split("*.c-a.0-c","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[{parts, + 2}]))), +?line <<"*.c-a.0-c">> = iolist_to_binary(join(re:split("*.c-a.0-c","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))), +?line <<":de:abd:e">> = iolist_to_binary(join(re:split("abde","^(?=ab(de))(abd)(e)",[trim]))), +?line <<":de:abd:e:">> = iolist_to_binary(join(re:split("abde","^(?=ab(de))(abd)(e)",[{parts, + 2}]))), +?line <<":de:abd:e:">> = iolist_to_binary(join(re:split("abde","^(?=ab(de))(abd)(e)",[]))), +?line <<"::abd:f">> = iolist_to_binary(join(re:split("abdf","^(?!(ab)de|x)(abd)(f)",[trim]))), +?line <<"::abd:f:">> = iolist_to_binary(join(re:split("abdf","^(?!(ab)de|x)(abd)(f)",[{parts, + 2}]))), +?line <<"::abd:f:">> = iolist_to_binary(join(re:split("abdf","^(?!(ab)de|x)(abd)(f)",[]))), +?line <<":abcd:cd:ab:cd">> = iolist_to_binary(join(re:split("abcd","^(?=(ab(cd)))(ab)",[trim]))), +?line <<":abcd:cd:ab:cd">> = iolist_to_binary(join(re:split("abcd","^(?=(ab(cd)))(ab)",[{parts, + 2}]))), +?line <<":abcd:cd:ab:cd">> = iolist_to_binary(join(re:split("abcd","^(?=(ab(cd)))(ab)",[]))), +?line <<":.d">> = iolist_to_binary(join(re:split("a.b.c.d","^[\\da-f](\\.[\\da-f])*$",[caseless, + trim]))), +?line <<":.d:">> = iolist_to_binary(join(re:split("a.b.c.d","^[\\da-f](\\.[\\da-f])*$",[caseless, + {parts, + 2}]))), +?line <<":.d:">> = iolist_to_binary(join(re:split("a.b.c.d","^[\\da-f](\\.[\\da-f])*$",[caseless]))), +?line <<":.D">> = iolist_to_binary(join(re:split("A.B.C.D","^[\\da-f](\\.[\\da-f])*$",[caseless, + trim]))), +?line <<":.D:">> = iolist_to_binary(join(re:split("A.B.C.D","^[\\da-f](\\.[\\da-f])*$",[caseless, + {parts, + 2}]))), +?line <<":.D:">> = iolist_to_binary(join(re:split("A.B.C.D","^[\\da-f](\\.[\\da-f])*$",[caseless]))), +?line <<":.C">> = iolist_to_binary(join(re:split("a.b.c.1.2.3.C","^[\\da-f](\\.[\\da-f])*$",[caseless, + trim]))), +?line <<":.C:">> = iolist_to_binary(join(re:split("a.b.c.1.2.3.C","^[\\da-f](\\.[\\da-f])*$",[caseless, + {parts, + 2}]))), +?line <<":.C:">> = iolist_to_binary(join(re:split("a.b.c.1.2.3.C","^[\\da-f](\\.[\\da-f])*$",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("\"1234\"","^\\\".*\\\"\\s*(;.*)?$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("\"1234\"","^\\\".*\\\"\\s*(;.*)?$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("\"1234\"","^\\\".*\\\"\\s*(;.*)?$",[]))), +?line <<":;">> = iolist_to_binary(join(re:split("\"abcd\" ;","^\\\".*\\\"\\s*(;.*)?$",[trim]))), +?line <<":;:">> = iolist_to_binary(join(re:split("\"abcd\" ;","^\\\".*\\\"\\s*(;.*)?$",[{parts, + 2}]))), +?line <<":;:">> = iolist_to_binary(join(re:split("\"abcd\" ;","^\\\".*\\\"\\s*(;.*)?$",[]))), +?line <<":; rhubarb">> = iolist_to_binary(join(re:split("\"\" ; rhubarb","^\\\".*\\\"\\s*(;.*)?$",[trim]))), +?line <<":; rhubarb:">> = iolist_to_binary(join(re:split("\"\" ; rhubarb","^\\\".*\\\"\\s*(;.*)?$",[{parts, + 2}]))), +?line <<":; rhubarb:">> = iolist_to_binary(join(re:split("\"\" ; rhubarb","^\\\".*\\\"\\s*(;.*)?$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\\".*\\\"\\s*(;.*)?$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\\".*\\\"\\s*(;.*)?$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\\".*\\\"\\s*(;.*)?$",[]))), +?line <<"\"1234\" : things">> = iolist_to_binary(join(re:split("\"1234\" : things","^\\\".*\\\"\\s*(;.*)?$",[trim]))), +?line <<"\"1234\" : things">> = iolist_to_binary(join(re:split("\"1234\" : things","^\\\".*\\\"\\s*(;.*)?$",[{parts, + 2}]))), +?line <<"\"1234\" : things">> = iolist_to_binary(join(re:split("\"1234\" : things","^\\\".*\\\"\\s*(;.*)?$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("","^$",[trim]))), +?line <<"">> = iolist_to_binary(join(re:split("","^$",[{parts, + 2}]))), +?line <<"">> = iolist_to_binary(join(re:split("","^$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab c"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab c"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab c"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended, + trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended, + {parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended]))), +?line <<"ab cde">> = iolist_to_binary(join(re:split("ab cde"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended, + trim]))), +?line <<"ab cde">> = iolist_to_binary(join(re:split("ab cde"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended, + {parts, + 2}]))), +?line <<"ab cde">> = iolist_to_binary(join(re:split("ab cde"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("ab c","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab c","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab c","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[]))), +?line <<"ab cde">> = iolist_to_binary(join(re:split("ab cde","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[trim]))), +?line <<"ab cde">> = iolist_to_binary(join(re:split("ab cde","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[{parts, + 2}]))), +?line <<"ab cde">> = iolist_to_binary(join(re:split("ab cde","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a bcd","^ a\\ b[c ]d $",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a bcd","^ a\\ b[c ]d $",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a bcd","^ a\\ b[c ]d $",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("a b d","^ a\\ b[c ]d $",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a b d","^ a\\ b[c ]d $",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a b d","^ a\\ b[c ]d $",[extended]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^ a\\ b[c ]d $",[extended, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^ a\\ b[c ]d $",[extended, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^ a\\ b[c ]d $",[extended]))), +?line <<"abcd">> = iolist_to_binary(join(re:split("abcd","^ a\\ b[c ]d $",[extended, + trim]))), +?line <<"abcd">> = iolist_to_binary(join(re:split("abcd","^ a\\ b[c ]d $",[extended, + {parts, + 2}]))), +?line <<"abcd">> = iolist_to_binary(join(re:split("abcd","^ a\\ b[c ]d $",[extended]))), +?line <<"ab d">> = iolist_to_binary(join(re:split("ab d","^ a\\ b[c ]d $",[extended, + trim]))), +?line <<"ab d">> = iolist_to_binary(join(re:split("ab d","^ a\\ b[c ]d $",[extended, + {parts, + 2}]))), +?line <<"ab d">> = iolist_to_binary(join(re:split("ab d","^ a\\ b[c ]d $",[extended]))), +?line <<":abc:bc:c:def:ef:f:hij:ij:j:klm:lm:m">> = iolist_to_binary(join(re:split("abcdefhijklm","^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$",[trim]))), +?line <<":abc:bc:c:def:ef:f:hij:ij:j:klm:lm:m:">> = iolist_to_binary(join(re:split("abcdefhijklm","^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$",[{parts, + 2}]))), +?line <<":abc:bc:c:def:ef:f:hij:ij:j:klm:lm:m:">> = iolist_to_binary(join(re:split("abcdefhijklm","^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$",[]))), +?line <<":bc:c:ef:f:ij:j:lm:m">> = iolist_to_binary(join(re:split("abcdefhijklm","^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$",[trim]))), +?line <<":bc:c:ef:f:ij:j:lm:m:">> = iolist_to_binary(join(re:split("abcdefhijklm","^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$",[{parts, + 2}]))), +?line <<":bc:c:ef:f:ij:j:lm:m:">> = iolist_to_binary(join(re:split("abcdefhijklm","^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a+ Z0+ +","^[\\w][\\W][\\s][\\S][\\d][\\D][\\b][\\n][\\c]][\\022]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a+ Z0+ +","^[\\w][\\W][\\s][\\S][\\d][\\D][\\b][\\n][\\c]][\\022]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a+ Z0+ +","^[\\w][\\W][\\s][\\S][\\d][\\D][\\b][\\n][\\c]][\\022]",[]))), +?line <<"">> = iolist_to_binary(join(re:split(".^$(*+)|{?,?}","^[.^$|()*+?{,}]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split(".^$(*+)|{?,?}","^[.^$|()*+?{,}]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split(".^$(*+)|{?,?}","^[.^$|()*+?{,}]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("z","^a*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("z","^a*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("z","^a*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("az","^a*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("az","^a*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("az","^a*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaz","^a*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaz","^a*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaz","^a*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","^a*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^a*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^a*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aa","^a*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aa","^a*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aa","^a*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","^a*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","^a*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","^a*\\w",[]))), +?line <<":+">> = iolist_to_binary(join(re:split("a+","^a*\\w",[trim]))), +?line <<":+">> = iolist_to_binary(join(re:split("a+","^a*\\w",[{parts, + 2}]))), +?line <<":+">> = iolist_to_binary(join(re:split("a+","^a*\\w",[]))), +?line <<":+">> = iolist_to_binary(join(re:split("aa+","^a*\\w",[trim]))), +?line <<":+">> = iolist_to_binary(join(re:split("aa+","^a*\\w",[{parts, + 2}]))), +?line <<":+">> = iolist_to_binary(join(re:split("aa+","^a*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("z","^a*?\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("z","^a*?\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("z","^a*?\\w",[]))), +?line <<":z">> = iolist_to_binary(join(re:split("az","^a*?\\w",[trim]))), +?line <<":z">> = iolist_to_binary(join(re:split("az","^a*?\\w",[{parts, + 2}]))), +?line <<":z">> = iolist_to_binary(join(re:split("az","^a*?\\w",[]))), +?line <<":aaz">> = iolist_to_binary(join(re:split("aaaz","^a*?\\w",[trim]))), +?line <<":aaz">> = iolist_to_binary(join(re:split("aaaz","^a*?\\w",[{parts, + 2}]))), +?line <<":aaz">> = iolist_to_binary(join(re:split("aaaz","^a*?\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","^a*?\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^a*?\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^a*?\\w",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aa","^a*?\\w",[trim]))), +?line <<":a">> = iolist_to_binary(join(re:split("aa","^a*?\\w",[{parts, + 2}]))), +?line <<":a">> = iolist_to_binary(join(re:split("aa","^a*?\\w",[]))), +?line <<":aaa">> = iolist_to_binary(join(re:split("aaaa","^a*?\\w",[trim]))), +?line <<":aaa">> = iolist_to_binary(join(re:split("aaaa","^a*?\\w",[{parts, + 2}]))), +?line <<":aaa">> = iolist_to_binary(join(re:split("aaaa","^a*?\\w",[]))), +?line <<":+">> = iolist_to_binary(join(re:split("a+","^a*?\\w",[trim]))), +?line <<":+">> = iolist_to_binary(join(re:split("a+","^a*?\\w",[{parts, + 2}]))), +?line <<":+">> = iolist_to_binary(join(re:split("a+","^a*?\\w",[]))), +?line <<":a+">> = iolist_to_binary(join(re:split("aa+","^a*?\\w",[trim]))), +?line <<":a+">> = iolist_to_binary(join(re:split("aa+","^a*?\\w",[{parts, + 2}]))), +?line <<":a+">> = iolist_to_binary(join(re:split("aa+","^a*?\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("az","^a+\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("az","^a+\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("az","^a+\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaz","^a+\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaz","^a+\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaz","^a+\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aa","^a+\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aa","^a+\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aa","^a+\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","^a+\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","^a+\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","^a+\\w",[]))), +?line <<":+">> = iolist_to_binary(join(re:split("aa+","^a+\\w",[trim]))), +?line <<":+">> = iolist_to_binary(join(re:split("aa+","^a+\\w",[{parts, + 2}]))), +?line <<":+">> = iolist_to_binary(join(re:split("aa+","^a+\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("az","^a+?\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("az","^a+?\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("az","^a+?\\w",[]))), +?line <<":az">> = iolist_to_binary(join(re:split("aaaz","^a+?\\w",[trim]))), +?line <<":az">> = iolist_to_binary(join(re:split("aaaz","^a+?\\w",[{parts, + 2}]))), +?line <<":az">> = iolist_to_binary(join(re:split("aaaz","^a+?\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aa","^a+?\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aa","^a+?\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aa","^a+?\\w",[]))), +?line <<":aa">> = iolist_to_binary(join(re:split("aaaa","^a+?\\w",[trim]))), +?line <<":aa">> = iolist_to_binary(join(re:split("aaaa","^a+?\\w",[{parts, + 2}]))), +?line <<":aa">> = iolist_to_binary(join(re:split("aaaa","^a+?\\w",[]))), +?line <<":+">> = iolist_to_binary(join(re:split("aa+","^a+?\\w",[trim]))), +?line <<":+">> = iolist_to_binary(join(re:split("aa+","^a+?\\w",[{parts, + 2}]))), +?line <<":+">> = iolist_to_binary(join(re:split("aa+","^a+?\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("1234567890","^\\d{8}\\w{2,}",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("1234567890","^\\d{8}\\w{2,}",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("1234567890","^\\d{8}\\w{2,}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12345678ab","^\\d{8}\\w{2,}",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12345678ab","^\\d{8}\\w{2,}",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12345678ab","^\\d{8}\\w{2,}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12345678__","^\\d{8}\\w{2,}",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12345678__","^\\d{8}\\w{2,}",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12345678__","^\\d{8}\\w{2,}",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8}\\w{2,}",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8}\\w{2,}",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8}\\w{2,}",[]))), +?line <<"1234567">> = iolist_to_binary(join(re:split("1234567","^\\d{8}\\w{2,}",[trim]))), +?line <<"1234567">> = iolist_to_binary(join(re:split("1234567","^\\d{8}\\w{2,}",[{parts, + 2}]))), +?line <<"1234567">> = iolist_to_binary(join(re:split("1234567","^\\d{8}\\w{2,}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[aeiou\\d]{4,5}$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[aeiou\\d]{4,5}$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[aeiou\\d]{4,5}$",[]))), +?line <<"123456">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}$",[trim]))), +?line <<"123456">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}$",[{parts, + 2}]))), +?line <<"123456">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}?",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}?",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}?",[]))), +?line <<"">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}?",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}?",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}?",[]))), +?line <<":5">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}?",[trim]))), +?line <<":5">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}?",[{parts, + 2}]))), +?line <<":5">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}?",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}?",[trim]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}?",[{parts, + 2}]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}?",[]))), +?line <<":56">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}?",[trim]))), +?line <<":56">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}?",[{parts, + 2}]))), +?line <<":56">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}?",[]))), +?line <<":abc:abc">> = iolist_to_binary(join(re:split("abc=abcabc","\\A(abc|def)=(\\1){2,3}\\Z",[trim]))), +?line <<":abc:abc:">> = iolist_to_binary(join(re:split("abc=abcabc","\\A(abc|def)=(\\1){2,3}\\Z",[{parts, + 2}]))), +?line <<":abc:abc:">> = iolist_to_binary(join(re:split("abc=abcabc","\\A(abc|def)=(\\1){2,3}\\Z",[]))), +?line <<":def:def">> = iolist_to_binary(join(re:split("def=defdefdef","\\A(abc|def)=(\\1){2,3}\\Z",[trim]))), +?line <<":def:def:">> = iolist_to_binary(join(re:split("def=defdefdef","\\A(abc|def)=(\\1){2,3}\\Z",[{parts, + 2}]))), +?line <<":def:def:">> = iolist_to_binary(join(re:split("def=defdefdef","\\A(abc|def)=(\\1){2,3}\\Z",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\A(abc|def)=(\\1){2,3}\\Z",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\A(abc|def)=(\\1){2,3}\\Z",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\A(abc|def)=(\\1){2,3}\\Z",[]))), +?line <<"abc=defdef">> = iolist_to_binary(join(re:split("abc=defdef","\\A(abc|def)=(\\1){2,3}\\Z",[trim]))), +?line <<"abc=defdef">> = iolist_to_binary(join(re:split("abc=defdef","\\A(abc|def)=(\\1){2,3}\\Z",[{parts, + 2}]))), +?line <<"abc=defdef">> = iolist_to_binary(join(re:split("abc=defdef","\\A(abc|def)=(\\1){2,3}\\Z",[]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:cd">> = iolist_to_binary(join(re:split("abcdefghijkcda2","^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\11*(\\3\\4)\\1(?#)2$",[trim]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:cd:">> = iolist_to_binary(join(re:split("abcdefghijkcda2","^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\11*(\\3\\4)\\1(?#)2$",[{parts, + 2}]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:cd:">> = iolist_to_binary(join(re:split("abcdefghijkcda2","^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\11*(\\3\\4)\\1(?#)2$",[]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:cd">> = iolist_to_binary(join(re:split("abcdefghijkkkkcda2","^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\11*(\\3\\4)\\1(?#)2$",[trim]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:cd:">> = iolist_to_binary(join(re:split("abcdefghijkkkkcda2","^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\11*(\\3\\4)\\1(?#)2$",[{parts, + 2}]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:cd:">> = iolist_to_binary(join(re:split("abcdefghijkkkkcda2","^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\11*(\\3\\4)\\1(?#)2$",[]))), +?line <<":cataract:aract:ract::3">> = iolist_to_binary(join(re:split("cataract cataract23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[trim]))), +?line <<":cataract:aract:ract::3:">> = iolist_to_binary(join(re:split("cataract cataract23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[{parts, + 2}]))), +?line <<":cataract:aract:ract::3:">> = iolist_to_binary(join(re:split("cataract cataract23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[]))), +?line <<":catatonic:atonic:tonic::3">> = iolist_to_binary(join(re:split("catatonic catatonic23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[trim]))), +?line <<":catatonic:atonic:tonic::3:">> = iolist_to_binary(join(re:split("catatonic catatonic23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[{parts, + 2}]))), +?line <<":catatonic:atonic:tonic::3:">> = iolist_to_binary(join(re:split("catatonic catatonic23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[]))), +?line <<":caterpillar:erpillar:::3">> = iolist_to_binary(join(re:split("caterpillar caterpillar23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[trim]))), +?line <<":caterpillar:erpillar:::3:">> = iolist_to_binary(join(re:split("caterpillar caterpillar23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[{parts, + 2}]))), +?line <<":caterpillar:erpillar:::3:">> = iolist_to_binary(join(re:split("caterpillar caterpillar23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[]))), +?line <<":abcd::02 1997">> = iolist_to_binary(join(re:split("From abcd Mon Sep 01 12:33:02 1997","^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]",[trim]))), +?line <<":abcd::02 1997">> = iolist_to_binary(join(re:split("From abcd Mon Sep 01 12:33:02 1997","^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]",[{parts, + 2}]))), +?line <<":abcd::02 1997">> = iolist_to_binary(join(re:split("From abcd Mon Sep 01 12:33:02 1997","^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]",[]))), +?line <<":Sep ::02 1997">> = iolist_to_binary(join(re:split("From abcd Mon Sep 01 12:33:02 1997","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[trim]))), +?line <<":Sep ::02 1997">> = iolist_to_binary(join(re:split("From abcd Mon Sep 01 12:33:02 1997","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[{parts, + 2}]))), +?line <<":Sep ::02 1997">> = iolist_to_binary(join(re:split("From abcd Mon Sep 01 12:33:02 1997","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[]))), +?line <<":Sep ::02 1997">> = iolist_to_binary(join(re:split("From abcd Mon Sep 1 12:33:02 1997","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[trim]))), +?line <<":Sep ::02 1997">> = iolist_to_binary(join(re:split("From abcd Mon Sep 1 12:33:02 1997","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[{parts, + 2}]))), +?line <<":Sep ::02 1997">> = iolist_to_binary(join(re:split("From abcd Mon Sep 1 12:33:02 1997","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[]))), +?line <<"From abcd Sep 01 12:33:02 1997">> = iolist_to_binary(join(re:split("From abcd Sep 01 12:33:02 1997","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[trim]))), +?line <<"From abcd Sep 01 12:33:02 1997">> = iolist_to_binary(join(re:split("From abcd Sep 01 12:33:02 1997","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[{parts, + 2}]))), +?line <<"From abcd Sep 01 12:33:02 1997">> = iolist_to_binary(join(re:split("From abcd Sep 01 12:33:02 1997","^From\\s+\\S+\\s+([a-zA-Z]{3}\\s+){2}\\d{1,2}\\s+\\d\\d:\\d\\d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12 +34","^12.34",[dotall,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12 +34","^12.34",[dotall,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12 +34","^12.34",[dotall]))), +?line <<"">> = iolist_to_binary(join(re:split("12 34","^12.34",[dotall, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12 34","^12.34",[dotall, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12 34","^12.34",[dotall]))), +?line <<"the quick : fox">> = iolist_to_binary(join(re:split("the quick brown fox","\\w+(?=\\t)",[trim]))), +?line <<"the quick : fox">> = iolist_to_binary(join(re:split("the quick brown fox","\\w+(?=\\t)",[{parts, + 2}]))), +?line <<"the quick : fox">> = iolist_to_binary(join(re:split("the quick brown fox","\\w+(?=\\t)",[]))), +?line <<"foobar is :lish see?">> = iolist_to_binary(join(re:split("foobar is foolish see?","foo(?!bar)(.*)",[trim]))), +?line <<"foobar is :lish see?:">> = iolist_to_binary(join(re:split("foobar is foolish see?","foo(?!bar)(.*)",[{parts, + 2}]))), +?line <<"foobar is :lish see?:">> = iolist_to_binary(join(re:split("foobar is foolish see?","foo(?!bar)(.*)",[]))), +?line <<"foobar c: etc">> = iolist_to_binary(join(re:split("foobar crowbar etc","(?:(?!foo)...|^.{0,2})bar(.*)",[trim]))), +?line <<"foobar c: etc:">> = iolist_to_binary(join(re:split("foobar crowbar etc","(?:(?!foo)...|^.{0,2})bar(.*)",[{parts, + 2}]))), +?line <<"foobar c: etc:">> = iolist_to_binary(join(re:split("foobar crowbar etc","(?:(?!foo)...|^.{0,2})bar(.*)",[]))), +?line <<":rel">> = iolist_to_binary(join(re:split("barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[trim]))), +?line <<":rel:">> = iolist_to_binary(join(re:split("barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[{parts, + 2}]))), +?line <<":rel:">> = iolist_to_binary(join(re:split("barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[]))), +?line <<":rel">> = iolist_to_binary(join(re:split("2barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[trim]))), +?line <<":rel:">> = iolist_to_binary(join(re:split("2barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[{parts, + 2}]))), +?line <<":rel:">> = iolist_to_binary(join(re:split("2barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[]))), +?line <<":rel">> = iolist_to_binary(join(re:split("A barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[trim]))), +?line <<":rel:">> = iolist_to_binary(join(re:split("A barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[{parts, + 2}]))), +?line <<":rel:">> = iolist_to_binary(join(re:split("A barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[]))), +?line <<":abc:456">> = iolist_to_binary(join(re:split("abc456","^(\\D*)(?=\\d)(?!123)",[trim]))), +?line <<":abc:456">> = iolist_to_binary(join(re:split("abc456","^(\\D*)(?=\\d)(?!123)",[{parts, + 2}]))), +?line <<":abc:456">> = iolist_to_binary(join(re:split("abc456","^(\\D*)(?=\\d)(?!123)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[]))), +?line <<"abc123">> = iolist_to_binary(join(re:split("abc123","^(\\D*)(?=\\d)(?!123)",[trim]))), +?line <<"abc123">> = iolist_to_binary(join(re:split("abc123","^(\\D*)(?=\\d)(?!123)",[{parts, + 2}]))), +?line <<"abc123">> = iolist_to_binary(join(re:split("abc123","^(\\D*)(?=\\d)(?!123)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("1234","^1234(?# test newlines + inside)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("1234","^1234(?# test newlines + inside)",[{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("1234","^1234(?# test newlines + inside)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("1234","^1234 #comment in extended re + ",[extended,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("1234","^1234 #comment in extended re + ",[extended,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("1234","^1234 #comment in extended re + ",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("abcd","#rhubarb + abcd",[extended,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","#rhubarb + abcd",[extended,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","#rhubarb + abcd",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("abcd","^abcd#rhubarb",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","^abcd#rhubarb",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","^abcd#rhubarb",[extended]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aaab","^(a)\\1{2,3}(.)",[trim]))), +?line <<":a:b:">> = iolist_to_binary(join(re:split("aaab","^(a)\\1{2,3}(.)",[{parts, + 2}]))), +?line <<":a:b:">> = iolist_to_binary(join(re:split("aaab","^(a)\\1{2,3}(.)",[]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aaaab","^(a)\\1{2,3}(.)",[trim]))), +?line <<":a:b:">> = iolist_to_binary(join(re:split("aaaab","^(a)\\1{2,3}(.)",[{parts, + 2}]))), +?line <<":a:b:">> = iolist_to_binary(join(re:split("aaaab","^(a)\\1{2,3}(.)",[]))), +?line <<":a:a:b">> = iolist_to_binary(join(re:split("aaaaab","^(a)\\1{2,3}(.)",[trim]))), +?line <<":a:a:b">> = iolist_to_binary(join(re:split("aaaaab","^(a)\\1{2,3}(.)",[{parts, + 2}]))), +?line <<":a:a:b">> = iolist_to_binary(join(re:split("aaaaab","^(a)\\1{2,3}(.)",[]))), +?line <<":a:a:ab">> = iolist_to_binary(join(re:split("aaaaaab","^(a)\\1{2,3}(.)",[trim]))), +?line <<":a:a:ab">> = iolist_to_binary(join(re:split("aaaaaab","^(a)\\1{2,3}(.)",[{parts, + 2}]))), +?line <<":a:a:ab">> = iolist_to_binary(join(re:split("aaaaaab","^(a)\\1{2,3}(.)",[]))), +?line <<"the ">> = iolist_to_binary(join(re:split("the abc","(?!^)abc",[trim]))), +?line <<"the :">> = iolist_to_binary(join(re:split("the abc","(?!^)abc",[{parts, + 2}]))), +?line <<"the :">> = iolist_to_binary(join(re:split("the abc","(?!^)abc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?!^)abc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?!^)abc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?!^)abc",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(?!^)abc",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(?!^)abc",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(?!^)abc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","(?=^)abc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","(?=^)abc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","(?=^)abc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=^)abc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=^)abc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=^)abc",[]))), +?line <<"the abc">> = iolist_to_binary(join(re:split("the abc","(?=^)abc",[trim]))), +?line <<"the abc">> = iolist_to_binary(join(re:split("the abc","(?=^)abc",[{parts, + 2}]))), +?line <<"the abc">> = iolist_to_binary(join(re:split("the abc","(?=^)abc",[]))), +?line <<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*|b)",[trim]))), +?line <<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*|b)",[{parts, + 2}]))), +?line <<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*|b)",[]))), +?line <<":abbbbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*|b)",[trim]))), +?line <<":abbbbb:">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*|b)",[{parts, + 2}]))), +?line <<":abbbbb:">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*|b)",[]))), +?line <<":a:bbbbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*?|b)",[trim]))), +?line <<":a:bbbbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*?|b)",[{parts, + 2}]))), +?line <<":a:bbbbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*?|b)",[]))), +?line <<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*?|b)",[trim]))), +?line <<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*?|b)",[{parts, + 2}]))), +?line <<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*?|b)",[]))), +?line <<"Alan Other ">> = iolist_to_binary(join(re:split("Alan Other "," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended,trim]))), +?line <<"Alan Other ">> = iolist_to_binary(join(re:split("Alan Other "," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended, + {parts,2}]))), +?line <<"Alan Other ">> = iolist_to_binary(join(re:split("Alan Other "," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split(""," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended,trim]))), +?line <<"">> = iolist_to_binary(join(re:split(""," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended, + {parts,2}]))), +?line <<"">> = iolist_to_binary(join(re:split(""," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended]))), +?line <<"user.ain">> = iolist_to_binary(join(re:split("user.ain"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended,trim]))), +?line <<"user.ain">> = iolist_to_binary(join(re:split("user.ain"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended, + {parts,2}]))), +?line <<"user.ain">> = iolist_to_binary(join(re:split("user.ain"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended]))), +?line <<"\"A. Other\" (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" (a comment)"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended,trim]))), +?line <<"\"A. Other\" (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" (a comment)"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended, + {parts,2}]))), +?line <<"\"A. Other\" (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" (a comment)"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended]))), +?line <<"A. Other (a comment)">> = iolist_to_binary(join(re:split("A. Other (a comment)"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended,trim]))), +?line <<"A. Other (a comment)">> = iolist_to_binary(join(re:split("A. Other (a comment)"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended, + {parts,2}]))), +?line <<"A. Other (a comment)">> = iolist_to_binary(join(re:split("A. Other (a comment)"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended]))), +?line <<"\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay">> = iolist_to_binary(join(re:split("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended,trim]))), +?line <<"\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay">> = iolist_to_binary(join(re:split("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended, + {parts,2}]))), +?line <<"\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay">> = iolist_to_binary(join(re:split("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended]))), +?line <<"A missing angle > = iolist_to_binary(join(re:split("A missing angle @,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended,trim]))), +?line <<"A missing angle > = iolist_to_binary(join(re:split("A missing angle @,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended, + {parts,2}]))), +?line <<"A missing angle > = iolist_to_binary(join(re:split("A missing angle @,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended,trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended, + {parts,2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended]))), +?line <<"The quick brown fox">> = iolist_to_binary(join(re:split("The quick brown fox"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended,trim]))), +?line <<"The quick brown fox">> = iolist_to_binary(join(re:split("The quick brown fox"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended, + {parts,2}]))), +?line <<"The quick brown fox">> = iolist_to_binary(join(re:split("The quick brown fox"," (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional leading comment +(?: (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or... +\\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) | # comments, or... + +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +# quoted strings +)* +< (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # leading < +(?: @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* + +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* , (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* )? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) # initial word +(?: (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\" (?: # opening quote... +[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote +| # or +\\\\ [^\\x80-\\xff] # Escaped something (something != CR) +)* \" # closing quote +) )* # further okay, if led by a period +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* @ (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # initial subdomain +(?: # +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* \\. # if led by a period... +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* (?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| \\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) # ...further okay +)* +# address spec +(?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* > # trailing > +# name and address +) (?: [\\040\\t] | \\( +(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )* +\\) )* # optional trailing comment",[extended]))), +?line <<"Alan Other ">> = iolist_to_binary(join(re:split("Alan Other ","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,trim]))), +?line <<"Alan Other ">> = iolist_to_binary(join(re:split("Alan Other ","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,{parts,2}]))), +?line <<"Alan Other ">> = iolist_to_binary(join(re:split("Alan Other ","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,trim]))), +?line <<"">> = iolist_to_binary(join(re:split("","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,{parts,2}]))), +?line <<"">> = iolist_to_binary(join(re:split("","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended]))), +?line <<"user.ain">> = iolist_to_binary(join(re:split("user.ain","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,trim]))), +?line <<"user.ain">> = iolist_to_binary(join(re:split("user.ain","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,{parts,2}]))), +?line <<"user.ain">> = iolist_to_binary(join(re:split("user.ain","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended]))), +?line <<"\"A. Other\" (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" (a comment)","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,trim]))), +?line <<"\"A. Other\" (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" (a comment)","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,{parts,2}]))), +?line <<"\"A. Other\" (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" (a comment)","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended]))), +?line <<"A. Other (a comment)">> = iolist_to_binary(join(re:split("A. Other (a comment)","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,trim]))), +?line <<"A. Other (a comment)">> = iolist_to_binary(join(re:split("A. Other (a comment)","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,{parts,2}]))), +?line <<"A. Other (a comment)">> = iolist_to_binary(join(re:split("A. Other (a comment)","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended]))), +?line <<"\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay">> = iolist_to_binary(join(re:split("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,trim]))), +?line <<"\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay">> = iolist_to_binary(join(re:split("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,{parts,2}]))), +?line <<"\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay">> = iolist_to_binary(join(re:split("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"-re.lay","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended]))), +?line <<"A missing angle > = iolist_to_binary(join(re:split("A missing angle @,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,trim]))), +?line <<"A missing angle > = iolist_to_binary(join(re:split("A missing angle @,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,{parts,2}]))), +?line <<"A missing angle > = iolist_to_binary(join(re:split("A missing angle @,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,{parts,2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended]))), +?line <<"The quick brown fox">> = iolist_to_binary(join(re:split("The quick brown fox","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,trim]))), +?line <<"The quick brown fox">> = iolist_to_binary(join(re:split("The quick brown fox","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended,{parts,2}]))), +?line <<"The quick brown fox">> = iolist_to_binary(join(re:split("The quick brown fox","[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional leading comment +(?: +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +# leading word +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # \"normal\" atoms and or spaces +(?: +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +| +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +) # \"special\" comment or quoted string +[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] * # more \"normal\" +)* +< +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +\" # \" +[^\\\\\\x80-\\xff\\n\\015\"] * # normal +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015\"] * )* # ( special normal* )* +\" # \" +# Quoted string +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\\. +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +(?: +[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters... +(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom +| +\\[ # [ +(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff +\\] # ] +) +[\\040\\t]* # Nab whitespace. +(?: +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: # ( +(?: \\\\ [^\\x80-\\xff] | +\\( # ( +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +(?: \\\\ [^\\x80-\\xff] [^\\\\\\x80-\\xff\\n\\015()] * )* # (special normal*)* +\\) # ) +) # special +[^\\\\\\x80-\\xff\\n\\015()] * # normal* +)* # )* +\\) # ) +[\\040\\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +)",[extended]))), +?line <<"abcdefpqrxyz0AB">> = iolist_to_binary(join(re:split("abcdefpqrxyz0AB","abc\\0def\\00pqr\\000xyz\\0000AB",[trim]))), +?line <<"abcdefpqrxyz0AB">> = iolist_to_binary(join(re:split("abcdefpqrxyz0AB","abc\\0def\\00pqr\\000xyz\\0000AB",[{parts, + 2}]))), +?line <<"abcdefpqrxyz0AB">> = iolist_to_binary(join(re:split("abcdefpqrxyz0AB","abc\\0def\\00pqr\\000xyz\\0000AB",[]))), +?line <<"abc456 abcdefpqrxyz0ABCDE">> = iolist_to_binary(join(re:split("abc456 abcdefpqrxyz0ABCDE","abc\\0def\\00pqr\\000xyz\\0000AB",[trim]))), +?line <<"abc456 abcdefpqrxyz0ABCDE">> = iolist_to_binary(join(re:split("abc456 abcdefpqrxyz0ABCDE","abc\\0def\\00pqr\\000xyz\\0000AB",[{parts, + 2}]))), +?line <<"abc456 abcdefpqrxyz0ABCDE">> = iolist_to_binary(join(re:split("abc456 abcdefpqrxyz0ABCDE","abc\\0def\\00pqr\\000xyz\\0000AB",[]))), +?line <<"abc efpqr0xyz00AB">> = iolist_to_binary(join(re:split("abc efpqr0xyz00AB","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[trim]))), +?line <<"abc efpqr0xyz00AB">> = iolist_to_binary(join(re:split("abc efpqr0xyz00AB","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[{parts, + 2}]))), +?line <<"abc efpqr0xyz00AB">> = iolist_to_binary(join(re:split("abc efpqr0xyz00AB","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[]))), +?line <<"abc456 abc efpqr0xyz00ABCDE">> = iolist_to_binary(join(re:split("abc456 abc efpqr0xyz00ABCDE","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[trim]))), +?line <<"abc456 abc efpqr0xyz00ABCDE">> = iolist_to_binary(join(re:split("abc456 abc efpqr0xyz00ABCDE","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[{parts, + 2}]))), +?line <<"abc456 abc efpqr0xyz00ABCDE">> = iolist_to_binary(join(re:split("abc456 abc efpqr0xyz00ABCDE","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[]))), +?line <<"A">> = iolist_to_binary(join(re:split("A","^[\\000-\\037]",[trim]))), +?line <<"A">> = iolist_to_binary(join(re:split("A","^[\\000-\\037]",[{parts, + 2}]))), +?line <<"A">> = iolist_to_binary(join(re:split("A","^[\\000-\\037]",[]))), +?line <<":B">> = iolist_to_binary(join(re:split("B","^[\\000-\\037]",[trim]))), +?line <<":B">> = iolist_to_binary(join(re:split("B","^[\\000-\\037]",[{parts, + 2}]))), +?line <<":B">> = iolist_to_binary(join(re:split("B","^[\\000-\\037]",[]))), +?line <<":C">> = iolist_to_binary(join(re:split("C","^[\\000-\\037]",[trim]))), +?line <<":C">> = iolist_to_binary(join(re:split("C","^[\\000-\\037]",[{parts, + 2}]))), +?line <<":C">> = iolist_to_binary(join(re:split("C","^[\\000-\\037]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("","\\0*",[trim]))), +?line <<"">> = iolist_to_binary(join(re:split("","\\0*",[{parts, + 2}]))), +?line <<"">> = iolist_to_binary(join(re:split("","\\0*",[]))), +?line <<"The AZ">> = iolist_to_binary(join(re:split("The AZ","A\\x0{2,3}Z",[trim]))), +?line <<"The AZ">> = iolist_to_binary(join(re:split("The AZ","A\\x0{2,3}Z",[{parts, + 2}]))), +?line <<"The AZ">> = iolist_to_binary(join(re:split("The AZ","A\\x0{2,3}Z",[]))), +?line <<"An AZ">> = iolist_to_binary(join(re:split("An AZ","A\\x0{2,3}Z",[trim]))), +?line <<"An AZ">> = iolist_to_binary(join(re:split("An AZ","A\\x0{2,3}Z",[{parts, + 2}]))), +?line <<"An AZ">> = iolist_to_binary(join(re:split("An AZ","A\\x0{2,3}Z",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","A\\x0{2,3}Z",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","A\\x0{2,3}Z",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","A\\x0{2,3}Z",[]))), +?line <<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[trim]))), +?line <<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[{parts, + 2}]))), +?line <<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[]))), +?line <<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[trim]))), +?line <<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[{parts, + 2}]))), +?line <<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[]))), +?line <<":cow:bell">> = iolist_to_binary(join(re:split("cowcowbell","^(cow|)\\1(bell)",[trim]))), +?line <<":cow:bell:">> = iolist_to_binary(join(re:split("cowcowbell","^(cow|)\\1(bell)",[{parts, + 2}]))), +?line <<":cow:bell:">> = iolist_to_binary(join(re:split("cowcowbell","^(cow|)\\1(bell)",[]))), +?line <<"::bell">> = iolist_to_binary(join(re:split("bell","^(cow|)\\1(bell)",[trim]))), +?line <<"::bell:">> = iolist_to_binary(join(re:split("bell","^(cow|)\\1(bell)",[{parts, + 2}]))), +?line <<"::bell:">> = iolist_to_binary(join(re:split("bell","^(cow|)\\1(bell)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(cow|)\\1(bell)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(cow|)\\1(bell)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(cow|)\\1(bell)",[]))), +?line <<"cowbell">> = iolist_to_binary(join(re:split("cowbell","^(cow|)\\1(bell)",[trim]))), +?line <<"cowbell">> = iolist_to_binary(join(re:split("cowbell","^(cow|)\\1(bell)",[{parts, + 2}]))), +?line <<"cowbell">> = iolist_to_binary(join(re:split("cowbell","^(cow|)\\1(bell)",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[trim]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[{parts, + 2}]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[trim]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[{parts, + 2}]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" +abc","^\\s",[trim]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" +abc","^\\s",[{parts,2}]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" +abc","^\\s",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[trim]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[{parts, + 2}]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[trim]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[{parts, + 2}]))), +?line <<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\s",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\s",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\s",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^\\s",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^\\s",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^\\s",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","^a b + c",[extended,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^a b + c",[extended,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^a b + c",[extended]))), +?line <<":a">> = iolist_to_binary(join(re:split("ab","^(a|)\\1*b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","^(a|)\\1*b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","^(a|)\\1*b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1*b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1*b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1*b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1*b",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1*b",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1*b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1*b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1*b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1*b",[]))), +?line <<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1*b",[trim]))), +?line <<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1*b",[{parts, + 2}]))), +?line <<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1*b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aab","^(a|)\\1+b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aab","^(a|)\\1+b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aab","^(a|)\\1+b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1+b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1+b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1+b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1+b",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1+b",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1+b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1+b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1+b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1+b",[]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1+b",[trim]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1+b",[{parts, + 2}]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1+b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("ab","^(a|)\\1?b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","^(a|)\\1?b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","^(a|)\\1?b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aab","^(a|)\\1?b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aab","^(a|)\\1?b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aab","^(a|)\\1?b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1?b",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1?b",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1?b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1?b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1?b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1?b",[]))), +?line <<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1?b",[trim]))), +?line <<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1?b",[{parts, + 2}]))), +?line <<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1?b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2}b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2}b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2}b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2}b",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2}b",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2}b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2}b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2}b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2}b",[]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2}b",[trim]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2}b",[{parts, + 2}]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2}b",[]))), +?line <<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2}b",[trim]))), +?line <<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2}b",[{parts, + 2}]))), +?line <<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2}b",[]))), +?line <<"aaaab">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2}b",[trim]))), +?line <<"aaaab">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2}b",[{parts, + 2}]))), +?line <<"aaaab">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2}b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2,3}b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2,3}b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2,3}b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2,3}b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2,3}b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2,3}b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2,3}b",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2,3}b",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2,3}b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2,3}b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2,3}b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2,3}b",[]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2,3}b",[trim]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2,3}b",[{parts, + 2}]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2,3}b",[]))), +?line <<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2,3}b",[trim]))), +?line <<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2,3}b",[{parts, + 2}]))), +?line <<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2,3}b",[]))), +?line <<"aaaaab">> = iolist_to_binary(join(re:split("aaaaab","^(a|)\\1{2,3}b",[trim]))), +?line <<"aaaaab">> = iolist_to_binary(join(re:split("aaaaab","^(a|)\\1{2,3}b",[{parts, + 2}]))), +?line <<"aaaaab">> = iolist_to_binary(join(re:split("aaaaab","^(a|)\\1{2,3}b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbbc","ab{1,3}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbc","ab{1,3}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbc","ab{1,3}bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbc","ab{1,3}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbc","ab{1,3}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbc","ab{1,3}bc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{1,3}bc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{1,3}bc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{1,3}bc",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","ab{1,3}bc",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","ab{1,3}bc",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","ab{1,3}bc",[]))), +?line <<"abbbbbc">> = iolist_to_binary(join(re:split("abbbbbc","ab{1,3}bc",[trim]))), +?line <<"abbbbbc">> = iolist_to_binary(join(re:split("abbbbbc","ab{1,3}bc",[{parts, + 2}]))), +?line <<"abbbbbc">> = iolist_to_binary(join(re:split("abbbbbc","ab{1,3}bc",[]))), +?line <<":track1:title:Blah blah blah">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[trim]))), +?line <<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[{parts, + 2}]))), +?line <<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[]))), +?line <<":track1:title:Blah blah blah">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[caseless, + trim]))), +?line <<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[caseless, + {parts, + 2}]))), +?line <<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[caseless]))), +?line <<":track1:title:Blah blah blah">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[t ]+(.*)",[caseless, + trim]))), +?line <<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[t ]+(.*)",[caseless, + {parts, + 2}]))), +?line <<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[t ]+(.*)",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-c]+$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-c]+$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-c]+$",[]))), +?line <<"wxy">> = iolist_to_binary(join(re:split("wxy","^[W-c]+$",[trim]))), +?line <<"wxy">> = iolist_to_binary(join(re:split("wxy","^[W-c]+$",[{parts, + 2}]))), +?line <<"wxy">> = iolist_to_binary(join(re:split("wxy","^[W-c]+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("wxy_^ABC","^[W-c]+$",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("wxy_^ABC","^[W-c]+$",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("wxy_^ABC","^[W-c]+$",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("WXY_^abc","^[\\x3f-\\x5F]+$",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[\\x3f-\\x5F]+$",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[\\x3f-\\x5F]+$",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("wxy_^ABC","^[\\x3f-\\x5F]+$",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("wxy_^ABC","^[\\x3f-\\x5F]+$",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("wxy_^ABC","^[\\x3f-\\x5F]+$",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","^abc$",[multiline, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^abc$",[multiline, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^abc$",[multiline]))), +?line <<"qqq +">> = iolist_to_binary(join(re:split("qqq +abc","^abc$",[multiline,trim]))), +?line <<"qqq +:">> = iolist_to_binary(join(re:split("qqq +abc","^abc$",[multiline,{parts,2}]))), +?line <<"qqq +:">> = iolist_to_binary(join(re:split("qqq +abc","^abc$",[multiline]))), +?line <<": +zzz">> = iolist_to_binary(join(re:split("abc +zzz","^abc$",[multiline,trim]))), +?line <<": +zzz">> = iolist_to_binary(join(re:split("abc +zzz","^abc$",[multiline,{parts,2}]))), +?line <<": +zzz">> = iolist_to_binary(join(re:split("abc +zzz","^abc$",[multiline]))), +?line <<"qqq +: +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","^abc$",[multiline,trim]))), +?line <<"qqq +: +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","^abc$",[multiline,{parts,2}]))), +?line <<"qqq +: +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","^abc$",[multiline]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","^abc$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^abc$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^abc$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[]))), +?line <<"qqq +abc">> = iolist_to_binary(join(re:split("qqq +abc","^abc$",[trim]))), +?line <<"qqq +abc">> = iolist_to_binary(join(re:split("qqq +abc","^abc$",[{parts,2}]))), +?line <<"qqq +abc">> = iolist_to_binary(join(re:split("qqq +abc","^abc$",[]))), +?line <<"abc +zzz">> = iolist_to_binary(join(re:split("abc +zzz","^abc$",[trim]))), +?line <<"abc +zzz">> = iolist_to_binary(join(re:split("abc +zzz","^abc$",[{parts,2}]))), +?line <<"abc +zzz">> = iolist_to_binary(join(re:split("abc +zzz","^abc$",[]))), +?line <<"qqq +abc +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","^abc$",[trim]))), +?line <<"qqq +abc +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","^abc$",[{parts,2}]))), +?line <<"qqq +abc +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","^abc$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\Z",[multiline, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\Z",[multiline, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\Z",[multiline]))), +?line <<"qqq +abc">> = iolist_to_binary(join(re:split("qqq +abc","\\Aabc\\Z",[multiline,trim]))), +?line <<"qqq +abc">> = iolist_to_binary(join(re:split("qqq +abc","\\Aabc\\Z",[multiline,{parts,2}]))), +?line <<"qqq +abc">> = iolist_to_binary(join(re:split("qqq +abc","\\Aabc\\Z",[multiline]))), +?line <<"abc +zzz">> = iolist_to_binary(join(re:split("abc +zzz","\\Aabc\\Z",[multiline,trim]))), +?line <<"abc +zzz">> = iolist_to_binary(join(re:split("abc +zzz","\\Aabc\\Z",[multiline,{parts,2}]))), +?line <<"abc +zzz">> = iolist_to_binary(join(re:split("abc +zzz","\\Aabc\\Z",[multiline]))), +?line <<"qqq +abc +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","\\Aabc\\Z",[multiline,trim]))), +?line <<"qqq +abc +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","\\Aabc\\Z",[multiline,{parts,2}]))), +?line <<"qqq +abc +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","\\Aabc\\Z",[multiline]))), +?line <<":f">> = iolist_to_binary(join(re:split("abc +def","\\A(.)*\\Z",[dotall,trim]))), +?line <<":f:">> = iolist_to_binary(join(re:split("abc +def","\\A(.)*\\Z",[dotall,{parts,2}]))), +?line <<":f:">> = iolist_to_binary(join(re:split("abc +def","\\A(.)*\\Z",[dotall]))), +?line <<":s">> = iolist_to_binary(join(re:split("*** Failers","\\A(.)*\\Z",[multiline, + trim]))), +?line <<":s:">> = iolist_to_binary(join(re:split("*** Failers","\\A(.)*\\Z",[multiline, + {parts, + 2}]))), +?line <<":s:">> = iolist_to_binary(join(re:split("*** Failers","\\A(.)*\\Z",[multiline]))), +?line <<"abc +def">> = iolist_to_binary(join(re:split("abc +def","\\A(.)*\\Z",[multiline,trim]))), +?line <<"abc +def">> = iolist_to_binary(join(re:split("abc +def","\\A(.)*\\Z",[multiline,{parts,2}]))), +?line <<"abc +def">> = iolist_to_binary(join(re:split("abc +def","\\A(.)*\\Z",[multiline]))), +?line <<"::c">> = iolist_to_binary(join(re:split("b::c","(?:b)|(?::+)",[trim]))), +?line <<":::c">> = iolist_to_binary(join(re:split("b::c","(?:b)|(?::+)",[{parts, + 2}]))), +?line <<"::c">> = iolist_to_binary(join(re:split("b::c","(?:b)|(?::+)",[]))), +?line <<"c">> = iolist_to_binary(join(re:split("c::b","(?:b)|(?::+)",[trim]))), +?line <<"c:b">> = iolist_to_binary(join(re:split("c::b","(?:b)|(?::+)",[{parts, + 2}]))), +?line <<"c::">> = iolist_to_binary(join(re:split("c::b","(?:b)|(?::+)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("az-","[-az]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("az-","[-az]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("az-","[-az]+",[]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[-az]+",[trim]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[-az]+",[{parts, + 2}]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[-az]+",[]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[-az]+",[trim]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[-az]+",[{parts, + 2}]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[-az]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("za-","[az-]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("za-","[az-]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("za-","[az-]+",[]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[az-]+",[trim]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[az-]+",[{parts, + 2}]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[az-]+",[]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[az-]+",[trim]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[az-]+",[{parts, + 2}]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[az-]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a-z","[a\\-z]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a-z","[a\\-z]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a-z","[a\\-z]+",[]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[a\\-z]+",[trim]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[a\\-z]+",[{parts, + 2}]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[a\\-z]+",[]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[a\\-z]+",[trim]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[a\\-z]+",[{parts, + 2}]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[a\\-z]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcdxyz","[a-z]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcdxyz","[a-z]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcdxyz","[a-z]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12-34","[\\d-]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12-34","[\\d-]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12-34","[\\d-]+",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-]+",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-]+",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-]+",[]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-]+",[trim]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-]+",[{parts, + 2}]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12-34z","[\\d-z]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12-34z","[\\d-z]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12-34z","[\\d-z]+",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-z]+",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-z]+",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-z]+",[]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-z]+",[trim]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-z]+",[{parts, + 2}]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-z]+",[]))), +?line <<": ">> = iolist_to_binary(join(re:split("\\ ","\\x5c",[trim]))), +?line <<": ">> = iolist_to_binary(join(re:split("\\ ","\\x5c",[{parts, + 2}]))), +?line <<": ">> = iolist_to_binary(join(re:split("\\ ","\\x5c",[]))), +?line <<"the:oo">> = iolist_to_binary(join(re:split("the Zoo","\\x20Z",[trim]))), +?line <<"the:oo">> = iolist_to_binary(join(re:split("the Zoo","\\x20Z",[{parts, + 2}]))), +?line <<"the:oo">> = iolist_to_binary(join(re:split("the Zoo","\\x20Z",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\x20Z",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\x20Z",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\x20Z",[]))), +?line <<"Zulu">> = iolist_to_binary(join(re:split("Zulu","\\x20Z",[trim]))), +?line <<"Zulu">> = iolist_to_binary(join(re:split("Zulu","\\x20Z",[{parts, + 2}]))), +?line <<"Zulu">> = iolist_to_binary(join(re:split("Zulu","\\x20Z",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[caseless, + trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[caseless, + {parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[caseless]))), +?line <<":ABC">> = iolist_to_binary(join(re:split("ABCabc","(abc)\\1",[caseless, + trim]))), +?line <<":ABC:">> = iolist_to_binary(join(re:split("ABCabc","(abc)\\1",[caseless, + {parts, + 2}]))), +?line <<":ABC:">> = iolist_to_binary(join(re:split("ABCabc","(abc)\\1",[caseless]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcABC","(abc)\\1",[caseless, + trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcABC","(abc)\\1",[caseless, + {parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcABC","(abc)\\1",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ab{3cd","ab{3cd",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab{3cd","ab{3cd",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab{3cd","ab{3cd",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab{3,cd","ab{3,cd",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab{3,cd","ab{3,cd",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab{3,cd","ab{3,cd",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab{3,4a}cd","ab{3,4a}cd",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab{3,4a}cd","ab{3,4a}cd",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab{3,4a}cd","ab{3,4a}cd",[]))), +?line <<"">> = iolist_to_binary(join(re:split("{4,5a}bc","{4,5a}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("{4,5a}bc","{4,5a}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("{4,5a}bc","{4,5a}bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","abc$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","abc$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","abc$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","abc$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","abc$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","abc$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[]))), +?line <<"abc +def">> = iolist_to_binary(join(re:split("abc +def","abc$",[trim]))), +?line <<"abc +def">> = iolist_to_binary(join(re:split("abc +def","abc$",[{parts,2}]))), +?line <<"abc +def">> = iolist_to_binary(join(re:split("abc +def","abc$",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcS","(abc)\\123",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcS","(abc)\\123",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcS","(abc)\\123",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abc“","(abc)\\223",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc“","(abc)\\223",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc“","(abc)\\223",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcÓ","(abc)\\323",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcÓ","(abc)\\323",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcÓ","(abc)\\323",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))), +?line <<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[trim]))), +?line <<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[{parts, + 2}]))), +?line <<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[]))), +?line <<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[trim]))), +?line <<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[{parts, + 2}]))), +?line <<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[]))), +?line <<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[trim]))), +?line <<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[{parts, + 2}]))), +?line <<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[]))), +?line <<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[trim]))), +?line <<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[{parts, + 2}]))), +?line <<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:l">> = iolist_to_binary(join(re:split("abcdefghijkllS","(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\\12\\123",[trim]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:l:">> = iolist_to_binary(join(re:split("abcdefghijkllS","(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\\12\\123",[{parts, + 2}]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:l:">> = iolist_to_binary(join(re:split("abcdefghijkllS","(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\\12\\123",[]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k">> = iolist_to_binary(join(re:split("abcdefghijk +S","(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\12\\123",[trim]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:">> = iolist_to_binary(join(re:split("abcdefghijk +S","(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\12\\123",[{parts,2}]))), +?line <<":a:b:c:d:e:f:g:h:i:j:k:">> = iolist_to_binary(join(re:split("abcdefghijk +S","(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\\12\\123",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abidef","ab\\idef",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abidef","ab\\idef",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abidef","ab\\idef",[]))), +?line <<"">> = iolist_to_binary(join(re:split("bc","a{0}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("bc","a{0}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("bc","a{0}bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("xyz","(a|(bc)){0,0}?xyz",[trim]))), +?line <<":::">> = iolist_to_binary(join(re:split("xyz","(a|(bc)){0,0}?xyz",[{parts, + 2}]))), +?line <<":::">> = iolist_to_binary(join(re:split("xyz","(a|(bc)){0,0}?xyz",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcde","abc[\\10]de",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcde","abc[\\10]de",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcde","abc[\\10]de",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcde","abc[\\1]de",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcde","abc[\\1]de",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcde","abc[\\1]de",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcde","(abc)[\\1]de",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcde","(abc)[\\1]de",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcde","(abc)[\\1]de",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a +b","(?s)a.b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a +b","(?s)a.b",[{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a +b","(?s)a.b",[]))), +?line <<":b:a:NOT:cccc:d">> = iolist_to_binary(join(re:split("baNOTccccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))), +?line <<":b:a:NOT:cccc:d">> = iolist_to_binary(join(re:split("baNOTccccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts, + 2}]))), +?line <<":b:a:NOT:cccc:d">> = iolist_to_binary(join(re:split("baNOTccccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))), +?line <<":b:a:NOT:ccc:d">> = iolist_to_binary(join(re:split("baNOTcccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))), +?line <<":b:a:NOT:ccc:d">> = iolist_to_binary(join(re:split("baNOTcccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts, + 2}]))), +?line <<":b:a:NOT:ccc:d">> = iolist_to_binary(join(re:split("baNOTcccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))), +?line <<":b:a:NO:Tcc:d">> = iolist_to_binary(join(re:split("baNOTccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))), +?line <<":b:a:NO:Tcc:d">> = iolist_to_binary(join(re:split("baNOTccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts, + 2}]))), +?line <<":b:a:NO:Tcc:d">> = iolist_to_binary(join(re:split("baNOTccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))), +?line <<":b:a::ccc:d">> = iolist_to_binary(join(re:split("bacccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))), +?line <<":b:a::ccc:d">> = iolist_to_binary(join(re:split("bacccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts, + 2}]))), +?line <<":b:a::ccc:d">> = iolist_to_binary(join(re:split("bacccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))), +?line <<":*:*:* Fail:ers">> = iolist_to_binary(join(re:split("*** Failers","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))), +?line <<":*:*:* Fail:ers:">> = iolist_to_binary(join(re:split("*** Failers","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts, + 2}]))), +?line <<":*:*:* Fail:ers:">> = iolist_to_binary(join(re:split("*** Failers","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))), +?line <<"anything">> = iolist_to_binary(join(re:split("anything","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))), +?line <<"anything">> = iolist_to_binary(join(re:split("anything","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts, + 2}]))), +?line <<"anything">> = iolist_to_binary(join(re:split("anything","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))), +?line <<"bc">> = iolist_to_binary(join(re:split("bc","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))), +?line <<"bc">> = iolist_to_binary(join(re:split("bc","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts, + 2}]))), +?line <<"bc">> = iolist_to_binary(join(re:split("bc","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))), +?line <<"baccd">> = iolist_to_binary(join(re:split("baccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))), +?line <<"baccd">> = iolist_to_binary(join(re:split("baccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts, + 2}]))), +?line <<"baccd">> = iolist_to_binary(join(re:split("baccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Abc","[^a]",[trim]))), +?line <<":bc">> = iolist_to_binary(join(re:split("Abc","[^a]",[{parts, + 2}]))), +?line <<":::">> = iolist_to_binary(join(re:split("Abc","[^a]",[]))), +?line <<"A">> = iolist_to_binary(join(re:split("Abc","[^a]",[caseless, + trim]))), +?line <<"A:c">> = iolist_to_binary(join(re:split("Abc","[^a]",[caseless, + {parts, + 2}]))), +?line <<"A::">> = iolist_to_binary(join(re:split("Abc","[^a]",[caseless]))), +?line <<":a">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[trim]))), +?line <<":aAbc">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[]))), +?line <<"AAAaA">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[caseless, + trim]))), +?line <<"AAAaA:">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[caseless, + {parts, + 2}]))), +?line <<"AAAaA:">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("bbb +ccc","[^a]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("bbb +ccc","[^a]+",[{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("bbb +ccc","[^a]+",[]))), +?line <<"ab">> = iolist_to_binary(join(re:split("abc","[^k]$",[trim]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("abc","[^k]$",[{parts, + 2}]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("abc","[^k]$",[]))), +?line <<"*** Failer">> = iolist_to_binary(join(re:split("*** Failers","[^k]$",[trim]))), +?line <<"*** Failer:">> = iolist_to_binary(join(re:split("*** Failers","[^k]$",[{parts, + 2}]))), +?line <<"*** Failer:">> = iolist_to_binary(join(re:split("*** Failers","[^k]$",[]))), +?line <<"abk">> = iolist_to_binary(join(re:split("abk","[^k]$",[trim]))), +?line <<"abk">> = iolist_to_binary(join(re:split("abk","[^k]$",[{parts, + 2}]))), +?line <<"abk">> = iolist_to_binary(join(re:split("abk","[^k]$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","[^k]{2,3}$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","[^k]{2,3}$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","[^k]{2,3}$",[]))), +?line <<"k">> = iolist_to_binary(join(re:split("kbc","[^k]{2,3}$",[trim]))), +?line <<"k:">> = iolist_to_binary(join(re:split("kbc","[^k]{2,3}$",[{parts, + 2}]))), +?line <<"k:">> = iolist_to_binary(join(re:split("kbc","[^k]{2,3}$",[]))), +?line <<"k">> = iolist_to_binary(join(re:split("kabc","[^k]{2,3}$",[trim]))), +?line <<"k:">> = iolist_to_binary(join(re:split("kabc","[^k]{2,3}$",[{parts, + 2}]))), +?line <<"k:">> = iolist_to_binary(join(re:split("kabc","[^k]{2,3}$",[]))), +?line <<"*** Fail">> = iolist_to_binary(join(re:split("*** Failers","[^k]{2,3}$",[trim]))), +?line <<"*** Fail:">> = iolist_to_binary(join(re:split("*** Failers","[^k]{2,3}$",[{parts, + 2}]))), +?line <<"*** Fail:">> = iolist_to_binary(join(re:split("*** Failers","[^k]{2,3}$",[]))), +?line <<"abk">> = iolist_to_binary(join(re:split("abk","[^k]{2,3}$",[trim]))), +?line <<"abk">> = iolist_to_binary(join(re:split("abk","[^k]{2,3}$",[{parts, + 2}]))), +?line <<"abk">> = iolist_to_binary(join(re:split("abk","[^k]{2,3}$",[]))), +?line <<"akb">> = iolist_to_binary(join(re:split("akb","[^k]{2,3}$",[trim]))), +?line <<"akb">> = iolist_to_binary(join(re:split("akb","[^k]{2,3}$",[{parts, + 2}]))), +?line <<"akb">> = iolist_to_binary(join(re:split("akb","[^k]{2,3}$",[]))), +?line <<"akk">> = iolist_to_binary(join(re:split("akk","[^k]{2,3}$",[trim]))), +?line <<"akk">> = iolist_to_binary(join(re:split("akk","[^k]{2,3}$",[{parts, + 2}]))), +?line <<"akk">> = iolist_to_binary(join(re:split("akk","[^k]{2,3}$",[]))), +?line <<"12345678.b.c.d">> = iolist_to_binary(join(re:split("12345678.b.c.d","^\\d{8,}\\@.+[^k]$",[trim]))), +?line <<"12345678.b.c.d">> = iolist_to_binary(join(re:split("12345678.b.c.d","^\\d{8,}\\@.+[^k]$",[{parts, + 2}]))), +?line <<"12345678.b.c.d">> = iolist_to_binary(join(re:split("12345678.b.c.d","^\\d{8,}\\@.+[^k]$",[]))), +?line <<"123456789.y.z">> = iolist_to_binary(join(re:split("123456789.y.z","^\\d{8,}\\@.+[^k]$",[trim]))), +?line <<"123456789.y.z">> = iolist_to_binary(join(re:split("123456789.y.z","^\\d{8,}\\@.+[^k]$",[{parts, + 2}]))), +?line <<"123456789.y.z">> = iolist_to_binary(join(re:split("123456789.y.z","^\\d{8,}\\@.+[^k]$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8,}\\@.+[^k]$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8,}\\@.+[^k]$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8,}\\@.+[^k]$",[]))), +?line <<"12345678.y.uk">> = iolist_to_binary(join(re:split("12345678.y.uk","^\\d{8,}\\@.+[^k]$",[trim]))), +?line <<"12345678.y.uk">> = iolist_to_binary(join(re:split("12345678.y.uk","^\\d{8,}\\@.+[^k]$",[{parts, + 2}]))), +?line <<"12345678.y.uk">> = iolist_to_binary(join(re:split("12345678.y.uk","^\\d{8,}\\@.+[^k]$",[]))), +?line <<"1234567.b.c.d">> = iolist_to_binary(join(re:split("1234567.b.c.d","^\\d{8,}\\@.+[^k]$",[trim]))), +?line <<"1234567.b.c.d">> = iolist_to_binary(join(re:split("1234567.b.c.d","^\\d{8,}\\@.+[^k]$",[{parts, + 2}]))), +?line <<"1234567.b.c.d">> = iolist_to_binary(join(re:split("1234567.b.c.d","^\\d{8,}\\@.+[^k]$",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaaaaaaa","(a)\\1{8,}",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaaaa","(a)\\1{8,}",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaaaa","(a)\\1{8,}",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaaaaaaaa","(a)\\1{8,}",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","(a)\\1{8,}",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","(a)\\1{8,}",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a)\\1{8,}",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a)\\1{8,}",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a)\\1{8,}",[]))), +?line <<"aaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaa","(a)\\1{8,}",[trim]))), +?line <<"aaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaa","(a)\\1{8,}",[{parts, + 2}]))), +?line <<"aaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaa","(a)\\1{8,}",[]))), +?line <<"aaaa">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[trim]))), +?line <<"aaaa:cd">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[{parts, + 2}]))), +?line <<"aaaa:::">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[]))), +?line <<"aa:a">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[trim]))), +?line <<"aa:abcd">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[{parts, + 2}]))), +?line <<"aa:a:::">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[]))), +?line <<"aaaa">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[caseless, + trim]))), +?line <<"aaaa:cd">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[caseless, + {parts, + 2}]))), +?line <<"aaaa:::">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[caseless]))), +?line <<"aaAa">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[caseless, + trim]))), +?line <<"aaAa:cd">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[caseless, + {parts, + 2}]))), +?line <<"aaAa:::">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[caseless]))), +?line <<"aaaa">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[trim]))), +?line <<"aaaa:cd">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[{parts, + 2}]))), +?line <<"aaaa:::">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[]))), +?line <<"aa:a">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[trim]))), +?line <<"aa:abcd">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[{parts, + 2}]))), +?line <<"aa:a:::">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[]))), +?line <<"aaaa">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[caseless, + trim]))), +?line <<"aaaa:cd">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[caseless, + {parts, + 2}]))), +?line <<"aaaa:::">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[caseless]))), +?line <<"aaAa">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[caseless, + trim]))), +?line <<"aaAa:cd">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[caseless, + {parts, + 2}]))), +?line <<"aaAa:::">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[caseless]))), +?line <<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,6}?LL",[trim]))), +?line <<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,6}?LL",[{parts, + 2}]))), +?line <<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,6}?LL",[]))), +?line <<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,}?LL",[trim]))), +?line <<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,}?LL",[{parts, + 2}]))), +?line <<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,}?LL",[]))), +?line <<"1:.23">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d[1-9]?)\\d+",[trim]))), +?line <<"1:.23:">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d[1-9]?)\\d+",[{parts, + 2}]))), +?line <<"1:.23:">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d[1-9]?)\\d+",[]))), +?line <<"1:.875">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d[1-9]?)\\d+",[trim]))), +?line <<"1:.875:">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d[1-9]?)\\d+",[{parts, + 2}]))), +?line <<"1:.875:">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d[1-9]?)\\d+",[]))), +?line <<"1:.23">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d[1-9]?)\\d+",[trim]))), +?line <<"1:.23:">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d[1-9]?)\\d+",[{parts, + 2}]))), +?line <<"1:.23:">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d[1-9]?)\\d+",[]))), +?line <<"1:.23::0003938">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[trim]))), +?line <<"1:.23::0003938">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[{parts, + 2}]))), +?line <<"1:.23::0003938">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[]))), +?line <<"1:.875:5:000282">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[trim]))), +?line <<"1:.875:5:000282">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[{parts, + 2}]))), +?line <<"1:.875:5:000282">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[]))), +?line <<"1.235">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[trim]))), +?line <<"1.235">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[{parts, + 2}]))), +?line <<"1.235">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab","a(?)b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","a(?)b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","a(?)b",[]))), +?line <<"Food is on the :foo:table">> = iolist_to_binary(join(re:split("Food is on the foo table","\\b(foo)\\s+(\\w+)",[caseless, + trim]))), +?line <<"Food is on the :foo:table:">> = iolist_to_binary(join(re:split("Food is on the foo table","\\b(foo)\\s+(\\w+)",[caseless, + {parts, + 2}]))), +?line <<"Food is on the :foo:table:">> = iolist_to_binary(join(re:split("Food is on the foo table","\\b(foo)\\s+(\\w+)",[caseless]))), +?line <<"The :d is under the bar in the :n.">> = iolist_to_binary(join(re:split("The food is under the bar in the barn.","foo(.*)bar",[trim]))), +?line <<"The :d is under the bar in the :n.">> = iolist_to_binary(join(re:split("The food is under the bar in the barn.","foo(.*)bar",[{parts, + 2}]))), +?line <<"The :d is under the bar in the :n.">> = iolist_to_binary(join(re:split("The food is under the bar in the barn.","foo(.*)bar",[]))), +?line <<"The :d is under the : in the barn.">> = iolist_to_binary(join(re:split("The food is under the bar in the barn.","foo(.*?)bar",[trim]))), +?line <<"The :d is under the : in the barn.">> = iolist_to_binary(join(re:split("The food is under the bar in the barn.","foo(.*?)bar",[{parts, + 2}]))), +?line <<"The :d is under the : in the barn.">> = iolist_to_binary(join(re:split("The food is under the bar in the barn.","foo(.*?)bar",[]))), +?line <<":I have 2 numbers: 53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d*)",[trim]))), +?line <<":I have 2 numbers: 53147::">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d*)",[{parts, + 2}]))), +?line <<":I have 2 numbers: 53147::">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d*)",[]))), +?line <<":I have 2 numbers: 5314:7">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)",[trim]))), +?line <<":I have 2 numbers: 5314:7:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)",[{parts, + 2}]))), +?line <<":I have 2 numbers: 5314:7:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)",[]))), +?line <<":I::: :::h:::a:::v:::e::: :2:: :::n:::u:::m:::b:::e:::r:::s::::::: :53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d*)",[trim]))), +?line <<":I:: have 2 numbers: 53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d*)",[{parts, + 2}]))), +?line <<":I::: :::h:::a:::v:::e::: :2:: :::n:::u:::m:::b:::e:::r:::s::::::: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d*)",[]))), +?line <<":I have :2:: numbers: :53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)",[trim]))), +?line <<":I have :2: numbers: 53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)",[{parts, + 2}]))), +?line <<":I have :2:: numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)",[]))), +?line <<":I have 2 numbers: 5314:7">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)$",[trim]))), +?line <<":I have 2 numbers: 5314:7:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)$",[{parts, + 2}]))), +?line <<":I have 2 numbers: 5314:7:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)$",[]))), +?line <<":I have 2 numbers: :53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)$",[trim]))), +?line <<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)$",[{parts, + 2}]))), +?line <<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)$",[]))), +?line <<":I have 2 numbers: :53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)\\b(\\d+)$",[trim]))), +?line <<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)\\b(\\d+)$",[{parts, + 2}]))), +?line <<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)\\b(\\d+)$",[]))), +?line <<":I have 2 numbers: :53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*\\D)(\\d+)$",[trim]))), +?line <<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*\\D)(\\d+)$",[{parts, + 2}]))), +?line <<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*\\D)(\\d+)$",[]))), +?line <<":C123">> = iolist_to_binary(join(re:split("ABC123","^\\D*(?!123)",[trim]))), +?line <<":C123">> = iolist_to_binary(join(re:split("ABC123","^\\D*(?!123)",[{parts, + 2}]))), +?line <<":C123">> = iolist_to_binary(join(re:split("ABC123","^\\D*(?!123)",[]))), +?line <<":ABC:445">> = iolist_to_binary(join(re:split("ABC445","^(\\D*)(?=\\d)(?!123)",[trim]))), +?line <<":ABC:445">> = iolist_to_binary(join(re:split("ABC445","^(\\D*)(?=\\d)(?!123)",[{parts, + 2}]))), +?line <<":ABC:445">> = iolist_to_binary(join(re:split("ABC445","^(\\D*)(?=\\d)(?!123)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[]))), +?line <<"ABC123">> = iolist_to_binary(join(re:split("ABC123","^(\\D*)(?=\\d)(?!123)",[trim]))), +?line <<"ABC123">> = iolist_to_binary(join(re:split("ABC123","^(\\D*)(?=\\d)(?!123)",[{parts, + 2}]))), +?line <<"ABC123">> = iolist_to_binary(join(re:split("ABC123","^(\\D*)(?=\\d)(?!123)",[]))), +?line <<":789">> = iolist_to_binary(join(re:split("W46]789","^[W-]46]",[trim]))), +?line <<":789">> = iolist_to_binary(join(re:split("W46]789","^[W-]46]",[{parts, + 2}]))), +?line <<":789">> = iolist_to_binary(join(re:split("W46]789","^[W-]46]",[]))), +?line <<":789">> = iolist_to_binary(join(re:split("-46]789","^[W-]46]",[trim]))), +?line <<":789">> = iolist_to_binary(join(re:split("-46]789","^[W-]46]",[{parts, + 2}]))), +?line <<":789">> = iolist_to_binary(join(re:split("-46]789","^[W-]46]",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-]46]",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-]46]",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-]46]",[]))), +?line <<"Wall">> = iolist_to_binary(join(re:split("Wall","^[W-]46]",[trim]))), +?line <<"Wall">> = iolist_to_binary(join(re:split("Wall","^[W-]46]",[{parts, + 2}]))), +?line <<"Wall">> = iolist_to_binary(join(re:split("Wall","^[W-]46]",[]))), +?line <<"Zebra">> = iolist_to_binary(join(re:split("Zebra","^[W-]46]",[trim]))), +?line <<"Zebra">> = iolist_to_binary(join(re:split("Zebra","^[W-]46]",[{parts, + 2}]))), +?line <<"Zebra">> = iolist_to_binary(join(re:split("Zebra","^[W-]46]",[]))), +?line <<"42">> = iolist_to_binary(join(re:split("42","^[W-]46]",[trim]))), +?line <<"42">> = iolist_to_binary(join(re:split("42","^[W-]46]",[{parts, + 2}]))), +?line <<"42">> = iolist_to_binary(join(re:split("42","^[W-]46]",[]))), +?line <<"[abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-]46]",[trim]))), +?line <<"[abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-]46]",[{parts, + 2}]))), +?line <<"[abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-]46]",[]))), +?line <<"]abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-]46]",[trim]))), +?line <<"]abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-]46]",[{parts, + 2}]))), +?line <<"]abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-]46]",[]))), +?line <<":46]789">> = iolist_to_binary(join(re:split("W46]789","^[W-\\]46]",[trim]))), +?line <<":46]789">> = iolist_to_binary(join(re:split("W46]789","^[W-\\]46]",[{parts, + 2}]))), +?line <<":46]789">> = iolist_to_binary(join(re:split("W46]789","^[W-\\]46]",[]))), +?line <<":all">> = iolist_to_binary(join(re:split("Wall","^[W-\\]46]",[trim]))), +?line <<":all">> = iolist_to_binary(join(re:split("Wall","^[W-\\]46]",[{parts, + 2}]))), +?line <<":all">> = iolist_to_binary(join(re:split("Wall","^[W-\\]46]",[]))), +?line <<":ebra">> = iolist_to_binary(join(re:split("Zebra","^[W-\\]46]",[trim]))), +?line <<":ebra">> = iolist_to_binary(join(re:split("Zebra","^[W-\\]46]",[{parts, + 2}]))), +?line <<":ebra">> = iolist_to_binary(join(re:split("Zebra","^[W-\\]46]",[]))), +?line <<":ylophone">> = iolist_to_binary(join(re:split("Xylophone","^[W-\\]46]",[trim]))), +?line <<":ylophone">> = iolist_to_binary(join(re:split("Xylophone","^[W-\\]46]",[{parts, + 2}]))), +?line <<":ylophone">> = iolist_to_binary(join(re:split("Xylophone","^[W-\\]46]",[]))), +?line <<":2">> = iolist_to_binary(join(re:split("42","^[W-\\]46]",[trim]))), +?line <<":2">> = iolist_to_binary(join(re:split("42","^[W-\\]46]",[{parts, + 2}]))), +?line <<":2">> = iolist_to_binary(join(re:split("42","^[W-\\]46]",[]))), +?line <<":abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-\\]46]",[trim]))), +?line <<":abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-\\]46]",[{parts, + 2}]))), +?line <<":abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-\\]46]",[]))), +?line <<":abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-\\]46]",[trim]))), +?line <<":abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-\\]46]",[{parts, + 2}]))), +?line <<":abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-\\]46]",[]))), +?line <<":backslash">> = iolist_to_binary(join(re:split("\\backslash","^[W-\\]46]",[trim]))), +?line <<":backslash">> = iolist_to_binary(join(re:split("\\backslash","^[W-\\]46]",[{parts, + 2}]))), +?line <<":backslash">> = iolist_to_binary(join(re:split("\\backslash","^[W-\\]46]",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-\\]46]",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-\\]46]",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-\\]46]",[]))), +?line <<"-46]789">> = iolist_to_binary(join(re:split("-46]789","^[W-\\]46]",[trim]))), +?line <<"-46]789">> = iolist_to_binary(join(re:split("-46]789","^[W-\\]46]",[{parts, + 2}]))), +?line <<"-46]789">> = iolist_to_binary(join(re:split("-46]789","^[W-\\]46]",[]))), +?line <<"well">> = iolist_to_binary(join(re:split("well","^[W-\\]46]",[trim]))), +?line <<"well">> = iolist_to_binary(join(re:split("well","^[W-\\]46]",[{parts, + 2}]))), +?line <<"well">> = iolist_to_binary(join(re:split("well","^[W-\\]46]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark otherword","word (?:[a-zA-Z0-9]+ ){0,10}otherword",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark otherword","word (?:[a-zA-Z0-9]+ ){0,10}otherword",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark otherword","word (?:[a-zA-Z0-9]+ ){0,10}otherword",[]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark","word (?:[a-zA-Z0-9]+ ){0,10}otherword",[trim]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark","word (?:[a-zA-Z0-9]+ ){0,10}otherword",[{parts, + 2}]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark","word (?:[a-zA-Z0-9]+ ){0,10}otherword",[]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope","word (?:[a-zA-Z0-9]+ ){0,300}otherword",[trim]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope","word (?:[a-zA-Z0-9]+ ){0,300}otherword",[{parts, + 2}]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope","word (?:[a-zA-Z0-9]+ ){0,300}otherword",[]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,0}",[trim]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,0}",[{parts, + 2}]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,0}",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(a){0,0}",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(a){0,0}",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(a){0,0}",[]))), +?line <<"aab">> = iolist_to_binary(join(re:split("aab","^(a){0,0}",[trim]))), +?line <<"aab">> = iolist_to_binary(join(re:split("aab","^(a){0,0}",[{parts, + 2}]))), +?line <<"aab">> = iolist_to_binary(join(re:split("aab","^(a){0,0}",[]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,1}",[trim]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,1}",[{parts, + 2}]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,1}",[]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,1}",[trim]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,1}",[{parts, + 2}]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,1}",[]))), +?line <<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){0,1}",[trim]))), +?line <<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){0,1}",[{parts, + 2}]))), +?line <<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){0,1}",[]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,2}",[trim]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,2}",[{parts, + 2}]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,2}",[]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,2}",[trim]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,2}",[{parts, + 2}]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,2}",[]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,2}",[trim]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,2}",[{parts, + 2}]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,2}",[]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,3}",[trim]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,3}",[{parts, + 2}]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,3}",[]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,3}",[trim]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,3}",[{parts, + 2}]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,3}",[]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,3}",[trim]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,3}",[{parts, + 2}]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,3}",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaa","^(a){0,3}",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){0,3}",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){0,3}",[]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,}",[trim]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,}",[{parts, + 2}]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,}",[]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,}",[trim]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,}",[{parts, + 2}]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,}",[]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,}",[trim]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,}",[{parts, + 2}]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,}",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaa","^(a){0,}",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){0,}",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){0,}",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){0,}",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){0,}",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){0,}",[]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,1}",[trim]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,1}",[{parts, + 2}]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,1}",[]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,1}",[trim]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,1}",[{parts, + 2}]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,1}",[]))), +?line <<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){1,1}",[trim]))), +?line <<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){1,1}",[{parts, + 2}]))), +?line <<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){1,1}",[]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,2}",[trim]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,2}",[{parts, + 2}]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,2}",[]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,2}",[trim]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,2}",[{parts, + 2}]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,2}",[]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,2}",[trim]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,2}",[{parts, + 2}]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,2}",[]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,3}",[trim]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,3}",[{parts, + 2}]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,3}",[]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,3}",[trim]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,3}",[{parts, + 2}]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,3}",[]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,3}",[trim]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,3}",[{parts, + 2}]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,3}",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaa","^(a){1,3}",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){1,3}",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){1,3}",[]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,}",[trim]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,}",[{parts, + 2}]))), +?line <<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,}",[]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,}",[trim]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,}",[{parts, + 2}]))), +?line <<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,}",[]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,}",[trim]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,}",[{parts, + 2}]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,}",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaa","^(a){1,}",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){1,}",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){1,}",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){1,}",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){1,}",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){1,}",[]))), +?line <<"borfle +: +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[trim]))), +?line <<"borfle +: +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[{parts,2}]))), +?line <<"borfle +: +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[]))), +?line <<"borfle +: +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".{0,}\\.gif",[trim]))), +?line <<"borfle +: +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".{0,}\\.gif",[{parts,2}]))), +?line <<"borfle +: +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".{0,}\\.gif",[]))), +?line <<"borfle +: +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[multiline,trim]))), +?line <<"borfle +: +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[multiline,{parts,2}]))), +?line <<"borfle +: +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[multiline]))), +?line <<": +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[dotall,trim]))), +?line <<": +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[dotall,{parts,2}]))), +?line <<": +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[dotall]))), +?line <<": +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[multiline,dotall,trim]))), +?line <<": +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[multiline,dotall,{parts,2}]))), +?line <<": +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*\\.gif",[multiline,dotall]))), +?line <<"borfle +bib.gif +">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[trim]))), +?line <<"borfle +bib.gif +:">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[{parts,2}]))), +?line <<"borfle +bib.gif +:">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[]))), +?line <<": +: +">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,trim]))), +?line <<": +bib.gif +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,{parts,2}]))), +?line <<": +: +:">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline]))), +?line <<"">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[dotall,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[dotall,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[dotall]))), +?line <<"">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,dotall,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,dotall,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,dotall]))), +?line <<"borfle +bib.gif +">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[trim]))), +?line <<"borfle +bib.gif +:">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[{parts,2}]))), +?line <<"borfle +bib.gif +:">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[]))), +?line <<": +: +">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,trim]))), +?line <<": +bib.gif +no">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,{parts,2}]))), +?line <<": +: +:">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline]))), +?line <<"">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[dotall,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[dotall,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[dotall]))), +?line <<"">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,dotall,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,dotall,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("borfle +bib.gif +no",".*$",[multiline,dotall]))), +?line <<"abcde +:1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[trim]))), +?line <<"abcde +:1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[{parts,2}]))), +?line <<"abcde +:1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[trim]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[{parts, + 2}]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[trim]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[{parts,2}]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[]))), +?line <<"abcde +:1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[multiline,trim]))), +?line <<"abcde +:1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[multiline,{parts,2}]))), +?line <<"abcde +:1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[multiline]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline, + trim]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline, + {parts, + 2}]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline]))), +?line <<"abcde +:B:ar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[multiline,trim]))), +?line <<"abcde +:B:ar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[multiline,{parts,2}]))), +?line <<"abcde +:B:ar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[multiline]))), +?line <<":abcde +1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[dotall,trim]))), +?line <<":abcde +1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[dotall,{parts,2}]))), +?line <<":abcde +1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[dotall]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[dotall, + trim]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[dotall, + {parts, + 2}]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[dotall]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[dotall, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[dotall, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[dotall]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[dotall,trim]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[dotall,{parts,2}]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[dotall]))), +?line <<":abcde +1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[multiline,dotall,trim]))), +?line <<":abcde +1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[multiline,dotall,{parts,2}]))), +?line <<":abcde +1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(.*X|^B)",[multiline,dotall]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline, + dotall, + trim]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline, + dotall, + {parts, + 2}]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline, + dotall]))), +?line <<"abcde +:B:ar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[multiline,dotall,trim]))), +?line <<"abcde +:B:ar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[multiline,dotall,{parts,2}]))), +?line <<"abcde +:B:ar">> = iolist_to_binary(join(re:split("abcde +Bar","(.*X|^B)",[multiline,dotall]))), +?line <<":abcde +1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(?s)(.*X|^B)",[trim]))), +?line <<":abcde +1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(?s)(.*X|^B)",[{parts,2}]))), +?line <<":abcde +1234X:yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(?s)(.*X|^B)",[]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s)(.*X|^B)",[trim]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s)(.*X|^B)",[{parts, + 2}]))), +?line <<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s)(.*X|^B)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s)(.*X|^B)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s)(.*X|^B)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s)(.*X|^B)",[]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(?s)(.*X|^B)",[trim]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(?s)(.*X|^B)",[{parts,2}]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(?s)(.*X|^B)",[]))), +?line <<":yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(?s:.*X|^B)",[trim]))), +?line <<":yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(?s:.*X|^B)",[{parts,2}]))), +?line <<":yz">> = iolist_to_binary(join(re:split("abcde +1234Xyz","(?s:.*X|^B)",[]))), +?line <<":arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s:.*X|^B)",[trim]))), +?line <<":arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s:.*X|^B)",[{parts, + 2}]))), +?line <<":arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s:.*X|^B)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s:.*X|^B)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s:.*X|^B)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s:.*X|^B)",[]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(?s:.*X|^B)",[trim]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(?s:.*X|^B)",[{parts,2}]))), +?line <<"abcde +Bar">> = iolist_to_binary(join(re:split("abcde +Bar","(?s:.*X|^B)",[]))), +?line <<"**** Failers">> = iolist_to_binary(join(re:split("**** Failers","^.*B",[trim]))), +?line <<"**** Failers">> = iolist_to_binary(join(re:split("**** Failers","^.*B",[{parts, + 2}]))), +?line <<"**** Failers">> = iolist_to_binary(join(re:split("**** Failers","^.*B",[]))), +?line <<"abc +B">> = iolist_to_binary(join(re:split("abc +B","^.*B",[trim]))), +?line <<"abc +B">> = iolist_to_binary(join(re:split("abc +B","^.*B",[{parts,2}]))), +?line <<"abc +B">> = iolist_to_binary(join(re:split("abc +B","^.*B",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc +B","(?s)^.*B",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc +B","(?s)^.*B",[{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc +B","(?s)^.*B",[]))), +?line <<"abc +">> = iolist_to_binary(join(re:split("abc +B","(?m)^.*B",[trim]))), +?line <<"abc +:">> = iolist_to_binary(join(re:split("abc +B","(?m)^.*B",[{parts,2}]))), +?line <<"abc +:">> = iolist_to_binary(join(re:split("abc +B","(?m)^.*B",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc +B","(?ms)^.*B",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc +B","(?ms)^.*B",[{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc +B","(?ms)^.*B",[]))), +?line <<"abc +">> = iolist_to_binary(join(re:split("abc +B","(?ms)^B",[trim]))), +?line <<"abc +:">> = iolist_to_binary(join(re:split("abc +B","(?ms)^B",[{parts,2}]))), +?line <<"abc +:">> = iolist_to_binary(join(re:split("abc +B","(?ms)^B",[]))), +?line <<"">> = iolist_to_binary(join(re:split("B","(?s)B$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("B","(?s)B$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("B","(?s)B$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("123456654321","^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("123456654321","^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("123456654321","^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("123456654321","^\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("123456654321","^\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("123456654321","^\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("123456654321","^[\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("123456654321","^[\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("123456654321","^[\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcabcabcabc","^[abc]{12}",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcabcabcabc","^[abc]{12}",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcabcabcabc","^[abc]{12}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcabcabcabc","^[a-c]{12}",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcabcabcabc","^[a-c]{12}",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcabcabcabc","^[a-c]{12}",[]))), +?line <<":c">> = iolist_to_binary(join(re:split("abcabcabcabc","^(a|b|c){12}",[trim]))), +?line <<":c:">> = iolist_to_binary(join(re:split("abcabcabcabc","^(a|b|c){12}",[{parts, + 2}]))), +?line <<":c:">> = iolist_to_binary(join(re:split("abcabcabcabc","^(a|b|c){12}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("n","^[abcdefghijklmnopqrstuvwxy0123456789]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("n","^[abcdefghijklmnopqrstuvwxy0123456789]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("n","^[abcdefghijklmnopqrstuvwxy0123456789]",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[abcdefghijklmnopqrstuvwxy0123456789]",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[abcdefghijklmnopqrstuvwxy0123456789]",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[abcdefghijklmnopqrstuvwxy0123456789]",[]))), +?line <<"z">> = iolist_to_binary(join(re:split("z","^[abcdefghijklmnopqrstuvwxy0123456789]",[trim]))), +?line <<"z">> = iolist_to_binary(join(re:split("z","^[abcdefghijklmnopqrstuvwxy0123456789]",[{parts, + 2}]))), +?line <<"z">> = iolist_to_binary(join(re:split("z","^[abcdefghijklmnopqrstuvwxy0123456789]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcd","abcde{0,0}",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","abcde{0,0}",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","abcde{0,0}",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abcde{0,0}",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abcde{0,0}",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abcde{0,0}",[]))), +?line <<"abce">> = iolist_to_binary(join(re:split("abce","abcde{0,0}",[trim]))), +?line <<"abce">> = iolist_to_binary(join(re:split("abce","abcde{0,0}",[{parts, + 2}]))), +?line <<"abce">> = iolist_to_binary(join(re:split("abce","abcde{0,0}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abe","ab[cd]{0,0}e",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abe","ab[cd]{0,0}e",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abe","ab[cd]{0,0}e",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab[cd]{0,0}e",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab[cd]{0,0}e",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab[cd]{0,0}e",[]))), +?line <<"abcde">> = iolist_to_binary(join(re:split("abcde","ab[cd]{0,0}e",[trim]))), +?line <<"abcde">> = iolist_to_binary(join(re:split("abcde","ab[cd]{0,0}e",[{parts, + 2}]))), +?line <<"abcde">> = iolist_to_binary(join(re:split("abcde","ab[cd]{0,0}e",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abd","ab(c){0,0}d",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("abd","ab(c){0,0}d",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("abd","ab(c){0,0}d",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab(c){0,0}d",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab(c){0,0}d",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab(c){0,0}d",[]))), +?line <<"abcd">> = iolist_to_binary(join(re:split("abcd","ab(c){0,0}d",[trim]))), +?line <<"abcd">> = iolist_to_binary(join(re:split("abcd","ab(c){0,0}d",[{parts, + 2}]))), +?line <<"abcd">> = iolist_to_binary(join(re:split("abcd","ab(c){0,0}d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","a(b*)",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","a(b*)",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","a(b*)",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("ab","a(b*)",[trim]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","a(b*)",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","a(b*)",[]))), +?line <<":bbbb">> = iolist_to_binary(join(re:split("abbbb","a(b*)",[trim]))), +?line <<":bbbb:">> = iolist_to_binary(join(re:split("abbbb","a(b*)",[{parts, + 2}]))), +?line <<":bbbb:">> = iolist_to_binary(join(re:split("abbbb","a(b*)",[]))), +?line <<"*** F::ilers">> = iolist_to_binary(join(re:split("*** Failers","a(b*)",[trim]))), +?line <<"*** F::ilers">> = iolist_to_binary(join(re:split("*** Failers","a(b*)",[{parts, + 2}]))), +?line <<"*** F::ilers">> = iolist_to_binary(join(re:split("*** Failers","a(b*)",[]))), +?line <<"bbbbb">> = iolist_to_binary(join(re:split("bbbbb","a(b*)",[trim]))), +?line <<"bbbbb">> = iolist_to_binary(join(re:split("bbbbb","a(b*)",[{parts, + 2}]))), +?line <<"bbbbb">> = iolist_to_binary(join(re:split("bbbbb","a(b*)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abe","ab\\d{0}e",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abe","ab\\d{0}e",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abe","ab\\d{0}e",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab\\d{0}e",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab\\d{0}e",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab\\d{0}e",[]))), +?line <<"ab1e">> = iolist_to_binary(join(re:split("ab1e","ab\\d{0}e",[trim]))), +?line <<"ab1e">> = iolist_to_binary(join(re:split("ab1e","ab\\d{0}e",[{parts, + 2}]))), +?line <<"ab1e">> = iolist_to_binary(join(re:split("ab1e","ab\\d{0}e",[]))), +?line <<"the :quick: brown fox">> = iolist_to_binary(join(re:split("the \"quick\" brown fox","\"([^\\\\\"]+|\\\\.)*\"",[trim]))), +?line <<"the :quick: brown fox">> = iolist_to_binary(join(re:split("the \"quick\" brown fox","\"([^\\\\\"]+|\\\\.)*\"",[{parts, + 2}]))), +?line <<"the :quick: brown fox">> = iolist_to_binary(join(re:split("the \"quick\" brown fox","\"([^\\\\\"]+|\\\\.)*\"",[]))), +?line <<": brown fox">> = iolist_to_binary(join(re:split("\"the \\\"quick\\\" brown fox\"","\"([^\\\\\"]+|\\\\.)*\"",[trim]))), +?line <<": brown fox:">> = iolist_to_binary(join(re:split("\"the \\\"quick\\\" brown fox\"","\"([^\\\\\"]+|\\\\.)*\"",[{parts, + 2}]))), +?line <<": brown fox:">> = iolist_to_binary(join(re:split("\"the \\\"quick\\\" brown fox\"","\"([^\\\\\"]+|\\\\.)*\"",[]))), +?line <<"a:b:c">> = iolist_to_binary(join(re:split("abc","",[trim]))), +?line <<"a:bc">> = iolist_to_binary(join(re:split("abc","",[{parts, + 2}]))), +?line <<"a:b:c:">> = iolist_to_binary(join(re:split("abc","",[]))), +?line <<"">> = iolist_to_binary(join(re:split("acb","a[^a]b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("acb","a[^a]b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("acb","a[^a]b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a +b","a[^a]b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a +b","a[^a]b",[{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a +b","a[^a]b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("acb","a.b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("acb","a.b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("acb","a.b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.b",[]))), +?line <<"a +b">> = iolist_to_binary(join(re:split("a +b","a.b",[trim]))), +?line <<"a +b">> = iolist_to_binary(join(re:split("a +b","a.b",[{parts,2}]))), +?line <<"a +b">> = iolist_to_binary(join(re:split("a +b","a.b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("acb","a[^a]b",[dotall, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("acb","a[^a]b",[dotall, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("acb","a[^a]b",[dotall]))), +?line <<"">> = iolist_to_binary(join(re:split("a +b","a[^a]b",[dotall,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a +b","a[^a]b",[dotall,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a +b","a[^a]b",[dotall]))), +?line <<"">> = iolist_to_binary(join(re:split("acb","a.b",[dotall, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("acb","a.b",[dotall, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("acb","a.b",[dotall]))), +?line <<"">> = iolist_to_binary(join(re:split("a +b","a.b",[dotall,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a +b","a.b",[dotall,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a +b","a.b",[dotall]))), +?line <<":a">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbbac","^(b+?|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbac","^(b+?|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbbbac","^(b+?|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbac","^(b+?|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbbbbac","^(b+?|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbbac","^(b+?|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbbac","^(b+?|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbbac","^(b+|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbac","^(b+|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbac","^(b+|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbbbac","^(b+|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbac","^(b+|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbac","^(b+|a){1,2}?c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("bbbbbac","^(b+|a){1,2}?c",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbbac","^(b+|a){1,2}?c",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("bbbbbac","^(b+|a){1,2}?c",[]))), +?line <<"x +b">> = iolist_to_binary(join(re:split("x +b","(?!\\A)x",[multiline,trim]))), +?line <<"x +b">> = iolist_to_binary(join(re:split("x +b","(?!\\A)x",[multiline,{parts,2}]))), +?line <<"x +b">> = iolist_to_binary(join(re:split("x +b","(?!\\A)x",[multiline]))), +?line <<"a">> = iolist_to_binary(join(re:split("ax","(?!\\A)x",[multiline, + trim]))), +?line <<"a:">> = iolist_to_binary(join(re:split("ax","(?!\\A)x",[multiline, + {parts, + 2}]))), +?line <<"a:">> = iolist_to_binary(join(re:split("ax","(?!\\A)x",[multiline]))), +?line <<"{ab}">> = iolist_to_binary(join(re:split("{ab}","\\x0{ab}",[trim]))), +?line <<"{ab}">> = iolist_to_binary(join(re:split("{ab}","\\x0{ab}",[{parts, + 2}]))), +?line <<"{ab}">> = iolist_to_binary(join(re:split("{ab}","\\x0{ab}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("CD","(A|B)*?CD",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("CD","(A|B)*?CD",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("CD","(A|B)*?CD",[]))), +?line <<"">> = iolist_to_binary(join(re:split("CD","(A|B)*CD",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("CD","(A|B)*CD",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("CD","(A|B)*CD",[]))), +?line <<":AB:AB">> = iolist_to_binary(join(re:split("ABABAB","(AB)*?\\1",[trim]))), +?line <<":AB:AB">> = iolist_to_binary(join(re:split("ABABAB","(AB)*?\\1",[{parts, + 2}]))), +?line <<":AB:AB">> = iolist_to_binary(join(re:split("ABABAB","(AB)*?\\1",[]))), +?line <<":AB">> = iolist_to_binary(join(re:split("ABABAB","(AB)*\\1",[trim]))), +?line <<":AB:">> = iolist_to_binary(join(re:split("ABABAB","(AB)*\\1",[{parts, + 2}]))), +?line <<":AB:">> = iolist_to_binary(join(re:split("ABABAB","(AB)*\\1",[]))), +?line <<"">> = iolist_to_binary(join(re:split("foo","(?> = iolist_to_binary(join(re:split("foo","(?> = iolist_to_binary(join(re:split("foo","(?> = iolist_to_binary(join(re:split("catfood","(?> = iolist_to_binary(join(re:split("catfood","(?> = iolist_to_binary(join(re:split("catfood","(?> = iolist_to_binary(join(re:split("arfootle","(?> = iolist_to_binary(join(re:split("arfootle","(?> = iolist_to_binary(join(re:split("arfootle","(?> = iolist_to_binary(join(re:split("rfoosh","(?> = iolist_to_binary(join(re:split("rfoosh","(?> = iolist_to_binary(join(re:split("rfoosh","(?> = iolist_to_binary(join(re:split("*** Failers","(?> = iolist_to_binary(join(re:split("*** Failers","(?> = iolist_to_binary(join(re:split("*** Failers","(?> = iolist_to_binary(join(re:split("barfoo","(?> = iolist_to_binary(join(re:split("barfoo","(?> = iolist_to_binary(join(re:split("barfoo","(?> = iolist_to_binary(join(re:split("towbarfoo","(?> = iolist_to_binary(join(re:split("towbarfoo","(?> = iolist_to_binary(join(re:split("towbarfoo","(?> = iolist_to_binary(join(re:split("catfood","\\w{3}(?> = iolist_to_binary(join(re:split("catfood","\\w{3}(?> = iolist_to_binary(join(re:split("catfood","\\w{3}(?> = iolist_to_binary(join(re:split("*** Failers","\\w{3}(?> = iolist_to_binary(join(re:split("*** Failers","\\w{3}(?> = iolist_to_binary(join(re:split("*** Failers","\\w{3}(?> = iolist_to_binary(join(re:split("foo","\\w{3}(?> = iolist_to_binary(join(re:split("foo","\\w{3}(?> = iolist_to_binary(join(re:split("foo","\\w{3}(?> = iolist_to_binary(join(re:split("barfoo","\\w{3}(?> = iolist_to_binary(join(re:split("barfoo","\\w{3}(?> = iolist_to_binary(join(re:split("barfoo","\\w{3}(?> = iolist_to_binary(join(re:split("towbarfoo","\\w{3}(?> = iolist_to_binary(join(re:split("towbarfoo","\\w{3}(?> = iolist_to_binary(join(re:split("towbarfoo","\\w{3}(?> = iolist_to_binary(join(re:split("fooabar","(?<=(foo)a)bar",[trim]))), +?line <<"fooa:foo:">> = iolist_to_binary(join(re:split("fooabar","(?<=(foo)a)bar",[{parts, + 2}]))), +?line <<"fooa:foo:">> = iolist_to_binary(join(re:split("fooabar","(?<=(foo)a)bar",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo)a)bar",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo)a)bar",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo)a)bar",[]))), +?line <<"bar">> = iolist_to_binary(join(re:split("bar","(?<=(foo)a)bar",[trim]))), +?line <<"bar">> = iolist_to_binary(join(re:split("bar","(?<=(foo)a)bar",[{parts, + 2}]))), +?line <<"bar">> = iolist_to_binary(join(re:split("bar","(?<=(foo)a)bar",[]))), +?line <<"foobbar">> = iolist_to_binary(join(re:split("foobbar","(?<=(foo)a)bar",[trim]))), +?line <<"foobbar">> = iolist_to_binary(join(re:split("foobbar","(?<=(foo)a)bar",[{parts, + 2}]))), +?line <<"foobbar">> = iolist_to_binary(join(re:split("foobbar","(?<=(foo)a)bar",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\z",[multiline, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\z",[multiline, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\z",[multiline]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline]))), +?line <<"qqq +abc">> = iolist_to_binary(join(re:split("qqq +abc","\\Aabc\\z",[multiline,trim]))), +?line <<"qqq +abc">> = iolist_to_binary(join(re:split("qqq +abc","\\Aabc\\z",[multiline,{parts,2}]))), +?line <<"qqq +abc">> = iolist_to_binary(join(re:split("qqq +abc","\\Aabc\\z",[multiline]))), +?line <<"abc +zzz">> = iolist_to_binary(join(re:split("abc +zzz","\\Aabc\\z",[multiline,trim]))), +?line <<"abc +zzz">> = iolist_to_binary(join(re:split("abc +zzz","\\Aabc\\z",[multiline,{parts,2}]))), +?line <<"abc +zzz">> = iolist_to_binary(join(re:split("abc +zzz","\\Aabc\\z",[multiline]))), +?line <<"qqq +abc +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","\\Aabc\\z",[multiline,trim]))), +?line <<"qqq +abc +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","\\Aabc\\z",[multiline,{parts,2}]))), +?line <<"qqq +abc +zzz">> = iolist_to_binary(join(re:split("qqq +abc +zzz","\\Aabc\\z",[multiline]))), +?line <<"1:.23">> = iolist_to_binary(join(re:split("1.230003938","(?>(\\.\\d\\d[1-9]?))\\d+",[trim]))), +?line <<"1:.23:">> = iolist_to_binary(join(re:split("1.230003938","(?>(\\.\\d\\d[1-9]?))\\d+",[{parts, + 2}]))), +?line <<"1:.23:">> = iolist_to_binary(join(re:split("1.230003938","(?>(\\.\\d\\d[1-9]?))\\d+",[]))), +?line <<"1:.875">> = iolist_to_binary(join(re:split("1.875000282","(?>(\\.\\d\\d[1-9]?))\\d+",[trim]))), +?line <<"1:.875:">> = iolist_to_binary(join(re:split("1.875000282","(?>(\\.\\d\\d[1-9]?))\\d+",[{parts, + 2}]))), +?line <<"1:.875:">> = iolist_to_binary(join(re:split("1.875000282","(?>(\\.\\d\\d[1-9]?))\\d+",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>(\\.\\d\\d[1-9]?))\\d+",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>(\\.\\d\\d[1-9]?))\\d+",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>(\\.\\d\\d[1-9]?))\\d+",[]))), +?line <<"1.235">> = iolist_to_binary(join(re:split("1.235","(?>(\\.\\d\\d[1-9]?))\\d+",[trim]))), +?line <<"1.235">> = iolist_to_binary(join(re:split("1.235","(?>(\\.\\d\\d[1-9]?))\\d+",[{parts, + 2}]))), +?line <<"1.235">> = iolist_to_binary(join(re:split("1.235","(?>(\\.\\d\\d[1-9]?))\\d+",[]))), +?line <<":party">> = iolist_to_binary(join(re:split("now is the time for all good men to come to the aid of the party","^((?>\\w+)|(?>\\s+))*$",[trim]))), +?line <<":party:">> = iolist_to_binary(join(re:split("now is the time for all good men to come to the aid of the party","^((?>\\w+)|(?>\\s+))*$",[{parts, + 2}]))), +?line <<":party:">> = iolist_to_binary(join(re:split("now is the time for all good men to come to the aid of the party","^((?>\\w+)|(?>\\s+))*$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^((?>\\w+)|(?>\\s+))*$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^((?>\\w+)|(?>\\s+))*$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^((?>\\w+)|(?>\\s+))*$",[]))), +?line <<"this is not a line with only words and spaces!">> = iolist_to_binary(join(re:split("this is not a line with only words and spaces!","^((?>\\w+)|(?>\\s+))*$",[trim]))), +?line <<"this is not a line with only words and spaces!">> = iolist_to_binary(join(re:split("this is not a line with only words and spaces!","^((?>\\w+)|(?>\\s+))*$",[{parts, + 2}]))), +?line <<"this is not a line with only words and spaces!">> = iolist_to_binary(join(re:split("this is not a line with only words and spaces!","^((?>\\w+)|(?>\\s+))*$",[]))), +?line <<":12345:a">> = iolist_to_binary(join(re:split("12345a","(\\d+)(\\w)",[trim]))), +?line <<":12345:a:">> = iolist_to_binary(join(re:split("12345a","(\\d+)(\\w)",[{parts, + 2}]))), +?line <<":12345:a:">> = iolist_to_binary(join(re:split("12345a","(\\d+)(\\w)",[]))), +?line <<":1234:5:+">> = iolist_to_binary(join(re:split("12345+","(\\d+)(\\w)",[trim]))), +?line <<":1234:5:+">> = iolist_to_binary(join(re:split("12345+","(\\d+)(\\w)",[{parts, + 2}]))), +?line <<":1234:5:+">> = iolist_to_binary(join(re:split("12345+","(\\d+)(\\w)",[]))), +?line <<":12345:a">> = iolist_to_binary(join(re:split("12345a","((?>\\d+))(\\w)",[trim]))), +?line <<":12345:a:">> = iolist_to_binary(join(re:split("12345a","((?>\\d+))(\\w)",[{parts, + 2}]))), +?line <<":12345:a:">> = iolist_to_binary(join(re:split("12345a","((?>\\d+))(\\w)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?>\\d+))(\\w)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?>\\d+))(\\w)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?>\\d+))(\\w)",[]))), +?line <<"12345+">> = iolist_to_binary(join(re:split("12345+","((?>\\d+))(\\w)",[trim]))), +?line <<"12345+">> = iolist_to_binary(join(re:split("12345+","((?>\\d+))(\\w)",[{parts, + 2}]))), +?line <<"12345+">> = iolist_to_binary(join(re:split("12345+","((?>\\d+))(\\w)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[]))), +?line <<":aaab">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[trim]))), +?line <<":aaab:">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[{parts, + 2}]))), +?line <<":aaab:">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[]))), +?line <<":aaa">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[trim]))), +?line <<":aaa:">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[{parts, + 2}]))), +?line <<":aaa:">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[]))), +?line <<"aaa:ccc">> = iolist_to_binary(join(re:split("aaabbbccc","(?>b)+",[trim]))), +?line <<"aaa:ccc">> = iolist_to_binary(join(re:split("aaabbbccc","(?>b)+",[{parts, + 2}]))), +?line <<"aaa:ccc">> = iolist_to_binary(join(re:split("aaabbbccc","(?>b)+",[]))), +?line <<"::::d">> = iolist_to_binary(join(re:split("aaabbbbccccd","(?>a+|b+|c+)*c",[trim]))), +?line <<":cccd">> = iolist_to_binary(join(re:split("aaabbbbccccd","(?>a+|b+|c+)*c",[{parts, + 2}]))), +?line <<"::::d">> = iolist_to_binary(join(re:split("aaabbbbccccd","(?>a+|b+|c+)*c",[]))), +?line <<"((:x">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[trim]))), +?line <<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[{parts, + 2}]))), +?line <<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("(abc)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("(abc)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("(abc)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[]))), +?line <<":xyz">> = iolist_to_binary(join(re:split("(abc(def)xyz)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[trim]))), +?line <<":xyz:">> = iolist_to_binary(join(re:split("(abc(def)xyz)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[{parts, + 2}]))), +?line <<":xyz:">> = iolist_to_binary(join(re:split("(abc(def)xyz)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[]))), +?line <<"((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[trim]))), +?line <<"((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[{parts, + 2}]))), +?line <<"((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab","a(?-i)b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","a(?-i)b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","a(?-i)b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("Ab","a(?-i)b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("Ab","a(?-i)b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("Ab","a(?-i)b",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?-i)b",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?-i)b",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?-i)b",[caseless]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","a(?-i)b",[caseless, + trim]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","a(?-i)b",[caseless, + {parts, + 2}]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","a(?-i)b",[caseless]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","a(?-i)b",[caseless, + trim]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","a(?-i)b",[caseless, + {parts, + 2}]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","a(?-i)b",[caseless]))), +?line <<":a bc">> = iolist_to_binary(join(re:split("a bcd e","(a (?x)b c)d e",[trim]))), +?line <<":a bc:">> = iolist_to_binary(join(re:split("a bcd e","(a (?x)b c)d e",[{parts, + 2}]))), +?line <<":a bc:">> = iolist_to_binary(join(re:split("a bcd e","(a (?x)b c)d e",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a (?x)b c)d e",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a (?x)b c)d e",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a (?x)b c)d e",[]))), +?line <<"a b cd e">> = iolist_to_binary(join(re:split("a b cd e","(a (?x)b c)d e",[trim]))), +?line <<"a b cd e">> = iolist_to_binary(join(re:split("a b cd e","(a (?x)b c)d e",[{parts, + 2}]))), +?line <<"a b cd e">> = iolist_to_binary(join(re:split("a b cd e","(a (?x)b c)d e",[]))), +?line <<"abcd e">> = iolist_to_binary(join(re:split("abcd e","(a (?x)b c)d e",[trim]))), +?line <<"abcd e">> = iolist_to_binary(join(re:split("abcd e","(a (?x)b c)d e",[{parts, + 2}]))), +?line <<"abcd e">> = iolist_to_binary(join(re:split("abcd e","(a (?x)b c)d e",[]))), +?line <<"a bcde">> = iolist_to_binary(join(re:split("a bcde","(a (?x)b c)d e",[trim]))), +?line <<"a bcde">> = iolist_to_binary(join(re:split("a bcde","(a (?x)b c)d e",[{parts, + 2}]))), +?line <<"a bcde">> = iolist_to_binary(join(re:split("a bcde","(a (?x)b c)d e",[]))), +?line <<":a bcde f">> = iolist_to_binary(join(re:split("a bcde f","(a b(?x)c d (?-x)e f)",[trim]))), +?line <<":a bcde f:">> = iolist_to_binary(join(re:split("a bcde f","(a b(?x)c d (?-x)e f)",[{parts, + 2}]))), +?line <<":a bcde f:">> = iolist_to_binary(join(re:split("a bcde f","(a b(?x)c d (?-x)e f)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a b(?x)c d (?-x)e f)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a b(?x)c d (?-x)e f)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a b(?x)c d (?-x)e f)",[]))), +?line <<"abcdef">> = iolist_to_binary(join(re:split("abcdef","(a b(?x)c d (?-x)e f)",[trim]))), +?line <<"abcdef">> = iolist_to_binary(join(re:split("abcdef","(a b(?x)c d (?-x)e f)",[{parts, + 2}]))), +?line <<"abcdef">> = iolist_to_binary(join(re:split("abcdef","(a b(?x)c d (?-x)e f)",[]))), +?line <<":ab">> = iolist_to_binary(join(re:split("abc","(a(?i)b)c",[trim]))), +?line <<":ab:">> = iolist_to_binary(join(re:split("abc","(a(?i)b)c",[{parts, + 2}]))), +?line <<":ab:">> = iolist_to_binary(join(re:split("abc","(a(?i)b)c",[]))), +?line <<":aB">> = iolist_to_binary(join(re:split("aBc","(a(?i)b)c",[trim]))), +?line <<":aB:">> = iolist_to_binary(join(re:split("aBc","(a(?i)b)c",[{parts, + 2}]))), +?line <<":aB:">> = iolist_to_binary(join(re:split("aBc","(a(?i)b)c",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)b)c",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)b)c",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)b)c",[]))), +?line <<"abC">> = iolist_to_binary(join(re:split("abC","(a(?i)b)c",[trim]))), +?line <<"abC">> = iolist_to_binary(join(re:split("abC","(a(?i)b)c",[{parts, + 2}]))), +?line <<"abC">> = iolist_to_binary(join(re:split("abC","(a(?i)b)c",[]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","(a(?i)b)c",[trim]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","(a(?i)b)c",[{parts, + 2}]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","(a(?i)b)c",[]))), +?line <<"Abc">> = iolist_to_binary(join(re:split("Abc","(a(?i)b)c",[trim]))), +?line <<"Abc">> = iolist_to_binary(join(re:split("Abc","(a(?i)b)c",[{parts, + 2}]))), +?line <<"Abc">> = iolist_to_binary(join(re:split("Abc","(a(?i)b)c",[]))), +?line <<"ABc">> = iolist_to_binary(join(re:split("ABc","(a(?i)b)c",[trim]))), +?line <<"ABc">> = iolist_to_binary(join(re:split("ABc","(a(?i)b)c",[{parts, + 2}]))), +?line <<"ABc">> = iolist_to_binary(join(re:split("ABc","(a(?i)b)c",[]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","(a(?i)b)c",[trim]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","(a(?i)b)c",[{parts, + 2}]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","(a(?i)b)c",[]))), +?line <<"AbC">> = iolist_to_binary(join(re:split("AbC","(a(?i)b)c",[trim]))), +?line <<"AbC">> = iolist_to_binary(join(re:split("AbC","(a(?i)b)c",[{parts, + 2}]))), +?line <<"AbC">> = iolist_to_binary(join(re:split("AbC","(a(?i)b)c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","a(?i:b)c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","a(?i:b)c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","a(?i:b)c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aBc","a(?i:b)c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aBc","a(?i:b)c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aBc","a(?i:b)c",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)c",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)c",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)c",[]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","a(?i:b)c",[trim]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","a(?i:b)c",[{parts, + 2}]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","a(?i:b)c",[]))), +?line <<"abC">> = iolist_to_binary(join(re:split("abC","a(?i:b)c",[trim]))), +?line <<"abC">> = iolist_to_binary(join(re:split("abC","a(?i:b)c",[{parts, + 2}]))), +?line <<"abC">> = iolist_to_binary(join(re:split("abC","a(?i:b)c",[]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)c",[trim]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)c",[{parts, + 2}]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aBc","a(?i:b)*c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aBc","a(?i:b)*c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aBc","a(?i:b)*c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aBBc","a(?i:b)*c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aBBc","a(?i:b)*c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aBBc","a(?i:b)*c",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)*c",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)*c",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)*c",[]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)*c",[trim]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)*c",[{parts, + 2}]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)*c",[]))), +?line <<"aBBC">> = iolist_to_binary(join(re:split("aBBC","a(?i:b)*c",[trim]))), +?line <<"aBBC">> = iolist_to_binary(join(re:split("aBBC","a(?i:b)*c",[{parts, + 2}]))), +?line <<"aBBC">> = iolist_to_binary(join(re:split("aBBC","a(?i:b)*c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcd","a(?=b(?i)c)\\w\\wd",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","a(?=b(?i)c)\\w\\wd",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","a(?=b(?i)c)\\w\\wd",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abCd","a(?=b(?i)c)\\w\\wd",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abCd","a(?=b(?i)c)\\w\\wd",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abCd","a(?=b(?i)c)\\w\\wd",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?=b(?i)c)\\w\\wd",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?=b(?i)c)\\w\\wd",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?=b(?i)c)\\w\\wd",[]))), +?line <<"aBCd">> = iolist_to_binary(join(re:split("aBCd","a(?=b(?i)c)\\w\\wd",[trim]))), +?line <<"aBCd">> = iolist_to_binary(join(re:split("aBCd","a(?=b(?i)c)\\w\\wd",[{parts, + 2}]))), +?line <<"aBCd">> = iolist_to_binary(join(re:split("aBCd","a(?=b(?i)c)\\w\\wd",[]))), +?line <<"abcD">> = iolist_to_binary(join(re:split("abcD","a(?=b(?i)c)\\w\\wd",[trim]))), +?line <<"abcD">> = iolist_to_binary(join(re:split("abcD","a(?=b(?i)c)\\w\\wd",[{parts, + 2}]))), +?line <<"abcD">> = iolist_to_binary(join(re:split("abcD","a(?=b(?i)c)\\w\\wd",[]))), +?line <<"">> = iolist_to_binary(join(re:split("more than million","(?s-i:more.*than).*million",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("more than million","(?s-i:more.*than).*million",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("more than million","(?s-i:more.*than).*million",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("more than MILLION","(?s-i:more.*than).*million",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("more than MILLION","(?s-i:more.*than).*million",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("more than MILLION","(?s-i:more.*than).*million",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("more + than Million","(?s-i:more.*than).*million",[caseless,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("more + than Million","(?s-i:more.*than).*million",[caseless,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("more + than Million","(?s-i:more.*than).*million",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s-i:more.*than).*million",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s-i:more.*than).*million",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s-i:more.*than).*million",[caseless]))), +?line <<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?s-i:more.*than).*million",[caseless, + trim]))), +?line <<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?s-i:more.*than).*million",[caseless, + {parts, + 2}]))), +?line <<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?s-i:more.*than).*million",[caseless]))), +?line <<"more + than + million">> = iolist_to_binary(join(re:split("more + than + million","(?s-i:more.*than).*million",[caseless,trim]))), +?line <<"more + than + million">> = iolist_to_binary(join(re:split("more + than + million","(?s-i:more.*than).*million",[caseless,{parts,2}]))), +?line <<"more + than + million">> = iolist_to_binary(join(re:split("more + than + million","(?s-i:more.*than).*million",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("more than million","(?:(?s-i)more.*than).*million",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("more than million","(?:(?s-i)more.*than).*million",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("more than million","(?:(?s-i)more.*than).*million",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("more than MILLION","(?:(?s-i)more.*than).*million",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("more than MILLION","(?:(?s-i)more.*than).*million",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("more than MILLION","(?:(?s-i)more.*than).*million",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("more + than Million","(?:(?s-i)more.*than).*million",[caseless,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("more + than Million","(?:(?s-i)more.*than).*million",[caseless,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("more + than Million","(?:(?s-i)more.*than).*million",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?s-i)more.*than).*million",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?s-i)more.*than).*million",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?s-i)more.*than).*million",[caseless]))), +?line <<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?:(?s-i)more.*than).*million",[caseless, + trim]))), +?line <<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?:(?s-i)more.*than).*million",[caseless, + {parts, + 2}]))), +?line <<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?:(?s-i)more.*than).*million",[caseless]))), +?line <<"more + than + million">> = iolist_to_binary(join(re:split("more + than + million","(?:(?s-i)more.*than).*million",[caseless,trim]))), +?line <<"more + than + million">> = iolist_to_binary(join(re:split("more + than + million","(?:(?s-i)more.*than).*million",[caseless,{parts,2}]))), +?line <<"more + than + million">> = iolist_to_binary(join(re:split("more + than + million","(?:(?s-i)more.*than).*million",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","(?>a(?i)b+)+c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","(?>a(?i)b+)+c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","(?>a(?i)b+)+c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aBbc","(?>a(?i)b+)+c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aBbc","(?>a(?i)b+)+c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aBbc","(?>a(?i)b+)+c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aBBc","(?>a(?i)b+)+c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aBBc","(?>a(?i)b+)+c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aBBc","(?>a(?i)b+)+c",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>a(?i)b+)+c",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>a(?i)b+)+c",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>a(?i)b+)+c",[]))), +?line <<"Abc">> = iolist_to_binary(join(re:split("Abc","(?>a(?i)b+)+c",[trim]))), +?line <<"Abc">> = iolist_to_binary(join(re:split("Abc","(?>a(?i)b+)+c",[{parts, + 2}]))), +?line <<"Abc">> = iolist_to_binary(join(re:split("Abc","(?>a(?i)b+)+c",[]))), +?line <<"abAb">> = iolist_to_binary(join(re:split("abAb","(?>a(?i)b+)+c",[trim]))), +?line <<"abAb">> = iolist_to_binary(join(re:split("abAb","(?>a(?i)b+)+c",[{parts, + 2}]))), +?line <<"abAb">> = iolist_to_binary(join(re:split("abAb","(?>a(?i)b+)+c",[]))), +?line <<"abbC">> = iolist_to_binary(join(re:split("abbC","(?>a(?i)b+)+c",[trim]))), +?line <<"abbC">> = iolist_to_binary(join(re:split("abbC","(?>a(?i)b+)+c",[{parts, + 2}]))), +?line <<"abbC">> = iolist_to_binary(join(re:split("abbC","(?>a(?i)b+)+c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","(?=a(?i)b)\\w\\wc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","(?=a(?i)b)\\w\\wc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","(?=a(?i)b)\\w\\wc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aBc","(?=a(?i)b)\\w\\wc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aBc","(?=a(?i)b)\\w\\wc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aBc","(?=a(?i)b)\\w\\wc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=a(?i)b)\\w\\wc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=a(?i)b)\\w\\wc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=a(?i)b)\\w\\wc",[]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?=a(?i)b)\\w\\wc",[trim]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?=a(?i)b)\\w\\wc",[{parts, + 2}]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?=a(?i)b)\\w\\wc",[]))), +?line <<"abC">> = iolist_to_binary(join(re:split("abC","(?=a(?i)b)\\w\\wc",[trim]))), +?line <<"abC">> = iolist_to_binary(join(re:split("abC","(?=a(?i)b)\\w\\wc",[{parts, + 2}]))), +?line <<"abC">> = iolist_to_binary(join(re:split("abC","(?=a(?i)b)\\w\\wc",[]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","(?=a(?i)b)\\w\\wc",[trim]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","(?=a(?i)b)\\w\\wc",[{parts, + 2}]))), +?line <<"aBC">> = iolist_to_binary(join(re:split("aBC","(?=a(?i)b)\\w\\wc",[]))), +?line <<"ab:xx">> = iolist_to_binary(join(re:split("abxxc","(?<=a(?i)b)(\\w\\w)c",[trim]))), +?line <<"ab:xx:">> = iolist_to_binary(join(re:split("abxxc","(?<=a(?i)b)(\\w\\w)c",[{parts, + 2}]))), +?line <<"ab:xx:">> = iolist_to_binary(join(re:split("abxxc","(?<=a(?i)b)(\\w\\w)c",[]))), +?line <<"aB:xx">> = iolist_to_binary(join(re:split("aBxxc","(?<=a(?i)b)(\\w\\w)c",[trim]))), +?line <<"aB:xx:">> = iolist_to_binary(join(re:split("aBxxc","(?<=a(?i)b)(\\w\\w)c",[{parts, + 2}]))), +?line <<"aB:xx:">> = iolist_to_binary(join(re:split("aBxxc","(?<=a(?i)b)(\\w\\w)c",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a(?i)b)(\\w\\w)c",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a(?i)b)(\\w\\w)c",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a(?i)b)(\\w\\w)c",[]))), +?line <<"Abxxc">> = iolist_to_binary(join(re:split("Abxxc","(?<=a(?i)b)(\\w\\w)c",[trim]))), +?line <<"Abxxc">> = iolist_to_binary(join(re:split("Abxxc","(?<=a(?i)b)(\\w\\w)c",[{parts, + 2}]))), +?line <<"Abxxc">> = iolist_to_binary(join(re:split("Abxxc","(?<=a(?i)b)(\\w\\w)c",[]))), +?line <<"ABxxc">> = iolist_to_binary(join(re:split("ABxxc","(?<=a(?i)b)(\\w\\w)c",[trim]))), +?line <<"ABxxc">> = iolist_to_binary(join(re:split("ABxxc","(?<=a(?i)b)(\\w\\w)c",[{parts, + 2}]))), +?line <<"ABxxc">> = iolist_to_binary(join(re:split("ABxxc","(?<=a(?i)b)(\\w\\w)c",[]))), +?line <<"abxxC">> = iolist_to_binary(join(re:split("abxxC","(?<=a(?i)b)(\\w\\w)c",[trim]))), +?line <<"abxxC">> = iolist_to_binary(join(re:split("abxxC","(?<=a(?i)b)(\\w\\w)c",[{parts, + 2}]))), +?line <<"abxxC">> = iolist_to_binary(join(re:split("abxxC","(?<=a(?i)b)(\\w\\w)c",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aA","(?:(a)|b)(?(1)A|B)",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aA","(?:(a)|b)(?(1)A|B)",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aA","(?:(a)|b)(?(1)A|B)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("bB","(?:(a)|b)(?(1)A|B)",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("bB","(?:(a)|b)(?(1)A|B)",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("bB","(?:(a)|b)(?(1)A|B)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(a)|b)(?(1)A|B)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(a)|b)(?(1)A|B)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(a)|b)(?(1)A|B)",[]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?:(a)|b)(?(1)A|B)",[trim]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?:(a)|b)(?(1)A|B)",[{parts, + 2}]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?:(a)|b)(?(1)A|B)",[]))), +?line <<"bA">> = iolist_to_binary(join(re:split("bA","(?:(a)|b)(?(1)A|B)",[trim]))), +?line <<"bA">> = iolist_to_binary(join(re:split("bA","(?:(a)|b)(?(1)A|B)",[{parts, + 2}]))), +?line <<"bA">> = iolist_to_binary(join(re:split("bA","(?:(a)|b)(?(1)A|B)",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aa","^(a)?(?(1)a|b)+$",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aa","^(a)?(?(1)a|b)+$",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aa","^(a)?(?(1)a|b)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","^(a)?(?(1)a|b)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a)?(?(1)a|b)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","^(a)?(?(1)a|b)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("bb","^(a)?(?(1)a|b)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("bb","^(a)?(?(1)a|b)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("bb","^(a)?(?(1)a|b)+$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a)?(?(1)a|b)+$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a)?(?(1)a|b)+$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a)?(?(1)a|b)+$",[]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a)?(?(1)a|b)+$",[trim]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a)?(?(1)a|b)+$",[{parts, + 2}]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","^(a)?(?(1)a|b)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc:","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc:","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc:","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts, + 2}]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))), +?line <<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))), +?line <<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts, + 2}]))), +?line <<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc:","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc:","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc:","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts, + 2}]))), +?line <<"123">> = iolist_to_binary(join(re:split("123","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))), +?line <<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))), +?line <<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts, + 2}]))), +?line <<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))), +?line <<"foo">> = iolist_to_binary(join(re:split("foobar","(?(?<=foo)bar|cat)",[trim]))), +?line <<"foo:">> = iolist_to_binary(join(re:split("foobar","(?(?<=foo)bar|cat)",[{parts, + 2}]))), +?line <<"foo:">> = iolist_to_binary(join(re:split("foobar","(?(?<=foo)bar|cat)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("cat","(?(?<=foo)bar|cat)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("cat","(?(?<=foo)bar|cat)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("cat","(?(?<=foo)bar|cat)",[]))), +?line <<"f">> = iolist_to_binary(join(re:split("fcat","(?(?<=foo)bar|cat)",[trim]))), +?line <<"f:">> = iolist_to_binary(join(re:split("fcat","(?(?<=foo)bar|cat)",[{parts, + 2}]))), +?line <<"f:">> = iolist_to_binary(join(re:split("fcat","(?(?<=foo)bar|cat)",[]))), +?line <<"fo">> = iolist_to_binary(join(re:split("focat","(?(?<=foo)bar|cat)",[trim]))), +?line <<"fo:">> = iolist_to_binary(join(re:split("focat","(?(?<=foo)bar|cat)",[{parts, + 2}]))), +?line <<"fo:">> = iolist_to_binary(join(re:split("focat","(?(?<=foo)bar|cat)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?<=foo)bar|cat)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?<=foo)bar|cat)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?<=foo)bar|cat)",[]))), +?line <<"foocat">> = iolist_to_binary(join(re:split("foocat","(?(?<=foo)bar|cat)",[trim]))), +?line <<"foocat">> = iolist_to_binary(join(re:split("foocat","(?(?<=foo)bar|cat)",[{parts, + 2}]))), +?line <<"foocat">> = iolist_to_binary(join(re:split("foocat","(?(?<=foo)bar|cat)",[]))), +?line <<"foo">> = iolist_to_binary(join(re:split("foobar","(?(?> = iolist_to_binary(join(re:split("foobar","(?(?> = iolist_to_binary(join(re:split("foobar","(?(?> = iolist_to_binary(join(re:split("cat","(?(?> = iolist_to_binary(join(re:split("cat","(?(?> = iolist_to_binary(join(re:split("cat","(?(?> = iolist_to_binary(join(re:split("fcat","(?(?> = iolist_to_binary(join(re:split("fcat","(?(?> = iolist_to_binary(join(re:split("fcat","(?(?> = iolist_to_binary(join(re:split("focat","(?(?> = iolist_to_binary(join(re:split("focat","(?(?> = iolist_to_binary(join(re:split("focat","(?(?> = iolist_to_binary(join(re:split("*** Failers","(?(?> = iolist_to_binary(join(re:split("*** Failers","(?(?> = iolist_to_binary(join(re:split("*** Failers","(?(?> = iolist_to_binary(join(re:split("foocat","(?(?> = iolist_to_binary(join(re:split("foocat","(?(?> = iolist_to_binary(join(re:split("foocat","(?(?> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended, + trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended, + {parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended]))), +?line <<":(">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) |) ",[extended, + trim]))), +?line <<":(:">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) |) ",[extended, + {parts, + 2}]))), +?line <<":(:">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) |) ",[extended]))), +?line <<":::(">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) |) ",[extended, + trim]))), +?line <<"::(abcd) fox">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) |) ",[extended, + {parts, + 2}]))), +?line <<":::(:::">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) |) ",[extended]))), +?line <<"(">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended, + trim]))), +?line <<"(::">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended, + {parts, + 2}]))), +?line <<"(::">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended, + trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended, + {parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended]))), +?line <<":(">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) ) ",[extended, + trim]))), +?line <<":(:">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) ) ",[extended, + {parts, + 2}]))), +?line <<":(:">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) ) ",[extended]))), +?line <<":::(">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) ) ",[extended, + trim]))), +?line <<"::(abcd) fox">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) ) ",[extended, + {parts, + 2}]))), +?line <<":::(:::">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) ) ",[extended]))), +?line <<"(">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended, + trim]))), +?line <<"(::">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended, + {parts, + 2}]))), +?line <<"(::">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended]))), +?line <<":1:2">> = iolist_to_binary(join(re:split("12","^(?(2)a|(1)(2))+$",[trim]))), +?line <<":1:2:">> = iolist_to_binary(join(re:split("12","^(?(2)a|(1)(2))+$",[{parts, + 2}]))), +?line <<":1:2:">> = iolist_to_binary(join(re:split("12","^(?(2)a|(1)(2))+$",[]))), +?line <<":1:2">> = iolist_to_binary(join(re:split("12a","^(?(2)a|(1)(2))+$",[trim]))), +?line <<":1:2:">> = iolist_to_binary(join(re:split("12a","^(?(2)a|(1)(2))+$",[{parts, + 2}]))), +?line <<":1:2:">> = iolist_to_binary(join(re:split("12a","^(?(2)a|(1)(2))+$",[]))), +?line <<":1:2">> = iolist_to_binary(join(re:split("12aa","^(?(2)a|(1)(2))+$",[trim]))), +?line <<":1:2:">> = iolist_to_binary(join(re:split("12aa","^(?(2)a|(1)(2))+$",[{parts, + 2}]))), +?line <<":1:2:">> = iolist_to_binary(join(re:split("12aa","^(?(2)a|(1)(2))+$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(2)a|(1)(2))+$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(2)a|(1)(2))+$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(2)a|(1)(2))+$",[]))), +?line <<"1234">> = iolist_to_binary(join(re:split("1234","^(?(2)a|(1)(2))+$",[trim]))), +?line <<"1234">> = iolist_to_binary(join(re:split("1234","^(?(2)a|(1)(2))+$",[{parts, + 2}]))), +?line <<"1234">> = iolist_to_binary(join(re:split("1234","^(?(2)a|(1)(2))+$",[]))), +?line <<":blah">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+\\1",[trim]))), +?line <<":blah:">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+\\1",[{parts, + 2}]))), +?line <<":blah:">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+\\1",[]))), +?line <<":BLAH">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+\\1",[trim]))), +?line <<":BLAH:">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+\\1",[{parts, + 2}]))), +?line <<":BLAH:">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+\\1",[]))), +?line <<":Blah">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+\\1",[trim]))), +?line <<":Blah:">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+\\1",[{parts, + 2}]))), +?line <<":Blah:">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+\\1",[]))), +?line <<":blaH">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+\\1",[trim]))), +?line <<":blaH:">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+\\1",[{parts, + 2}]))), +?line <<":blaH:">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+\\1",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)blah)\\s+\\1",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)blah)\\s+\\1",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)blah)\\s+\\1",[]))), +?line <<"blah BLAH">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+\\1",[trim]))), +?line <<"blah BLAH">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+\\1",[{parts, + 2}]))), +?line <<"blah BLAH">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+\\1",[]))), +?line <<"Blah blah">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+\\1",[trim]))), +?line <<"Blah blah">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+\\1",[{parts, + 2}]))), +?line <<"Blah blah">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+\\1",[]))), +?line <<"blaH blah">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+\\1",[trim]))), +?line <<"blaH blah">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+\\1",[{parts, + 2}]))), +?line <<"blaH blah">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+\\1",[]))), +?line <<":blah">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+(?i:\\1)",[trim]))), +?line <<":blah:">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+(?i:\\1)",[{parts, + 2}]))), +?line <<":blah:">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+(?i:\\1)",[]))), +?line <<":BLAH">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+(?i:\\1)",[trim]))), +?line <<":BLAH:">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+(?i:\\1)",[{parts, + 2}]))), +?line <<":BLAH:">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+(?i:\\1)",[]))), +?line <<":Blah">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+(?i:\\1)",[trim]))), +?line <<":Blah:">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+(?i:\\1)",[{parts, + 2}]))), +?line <<":Blah:">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+(?i:\\1)",[]))), +?line <<":blaH">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+(?i:\\1)",[trim]))), +?line <<":blaH:">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+(?i:\\1)",[{parts, + 2}]))), +?line <<":blaH:">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+(?i:\\1)",[]))), +?line <<":blah">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+(?i:\\1)",[trim]))), +?line <<":blah:">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+(?i:\\1)",[{parts, + 2}]))), +?line <<":blah:">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+(?i:\\1)",[]))), +?line <<":Blah">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+(?i:\\1)",[trim]))), +?line <<":Blah:">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+(?i:\\1)",[{parts, + 2}]))), +?line <<":Blah:">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+(?i:\\1)",[]))), +?line <<":blaH">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+(?i:\\1)",[trim]))), +?line <<":blaH:">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+(?i:\\1)",[{parts, + 2}]))), +?line <<":blaH:">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+(?i:\\1)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","(?>a*)*",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","(?>a*)*",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","(?>a*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aa","(?>a*)*",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aa","(?>a*)*",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aa","(?>a*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","(?>a*)*",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","(?>a*)*",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","(?>a*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","(abc|)+",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("abc","(abc|)+",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("abc","(abc|)+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcabc","(abc|)+",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcabc","(abc|)+",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcabc","(abc|)+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcabcabc","(abc|)+",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcabcabc","(abc|)+",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcabcabc","(abc|)+",[]))), +?line <<"x::y::z">> = iolist_to_binary(join(re:split("xyz","(abc|)+",[trim]))), +?line <<"x::yz">> = iolist_to_binary(join(re:split("xyz","(abc|)+",[{parts, + 2}]))), +?line <<"x::y::z::">> = iolist_to_binary(join(re:split("xyz","(abc|)+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","([a]*)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","([a]*)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","([a]*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaaa","([a]*)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("aaaaa","([a]*)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("aaaaa","([a]*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","([ab]*)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","([ab]*)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","([ab]*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","([ab]*)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","([ab]*)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","([ab]*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ababab","([ab]*)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("ababab","([ab]*)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("ababab","([ab]*)*",[]))), +?line <<"::c::d::e">> = iolist_to_binary(join(re:split("aaaabcde","([ab]*)*",[trim]))), +?line <<"::cde">> = iolist_to_binary(join(re:split("aaaabcde","([ab]*)*",[{parts, + 2}]))), +?line <<"::c::d::e::">> = iolist_to_binary(join(re:split("aaaabcde","([ab]*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("bbbb","([ab]*)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("bbbb","([ab]*)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("bbbb","([ab]*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","([^a]*)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","([^a]*)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","([^a]*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("bbbb","([^a]*)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("bbbb","([^a]*)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("bbbb","([^a]*)*",[]))), +?line <<"a::a::a">> = iolist_to_binary(join(re:split("aaa","([^a]*)*",[trim]))), +?line <<"a::aa">> = iolist_to_binary(join(re:split("aaa","([^a]*)*",[{parts, + 2}]))), +?line <<"a::a::a::">> = iolist_to_binary(join(re:split("aaa","([^a]*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("cccc","([^ab]*)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("cccc","([^ab]*)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("cccc","([^ab]*)*",[]))), +?line <<"a::b::a::b">> = iolist_to_binary(join(re:split("abab","([^ab]*)*",[trim]))), +?line <<"a::bab">> = iolist_to_binary(join(re:split("abab","([^ab]*)*",[{parts, + 2}]))), +?line <<"a::b::a::b::">> = iolist_to_binary(join(re:split("abab","([^ab]*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","([a]*?)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","([a]*?)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","([a]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","([a]*?)*",[trim]))), +?line <<"::aaa">> = iolist_to_binary(join(re:split("aaaa","([a]*?)*",[{parts, + 2}]))), +?line <<"::::::::">> = iolist_to_binary(join(re:split("aaaa","([a]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","([ab]*?)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","([ab]*?)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","([ab]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","([ab]*?)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","([ab]*?)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","([ab]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abab","([ab]*?)*",[trim]))), +?line <<"::bab">> = iolist_to_binary(join(re:split("abab","([ab]*?)*",[{parts, + 2}]))), +?line <<"::::::::">> = iolist_to_binary(join(re:split("abab","([ab]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("baba","([ab]*?)*",[trim]))), +?line <<"::aba">> = iolist_to_binary(join(re:split("baba","([ab]*?)*",[{parts, + 2}]))), +?line <<"::::::::">> = iolist_to_binary(join(re:split("baba","([ab]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","([^a]*?)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","([^a]*?)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("b","([^a]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("bbbb","([^a]*?)*",[trim]))), +?line <<"::bbb">> = iolist_to_binary(join(re:split("bbbb","([^a]*?)*",[{parts, + 2}]))), +?line <<"::::::::">> = iolist_to_binary(join(re:split("bbbb","([^a]*?)*",[]))), +?line <<"a::a::a">> = iolist_to_binary(join(re:split("aaa","([^a]*?)*",[trim]))), +?line <<"a::aa">> = iolist_to_binary(join(re:split("aaa","([^a]*?)*",[{parts, + 2}]))), +?line <<"a::a::a::">> = iolist_to_binary(join(re:split("aaa","([^a]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("c","([^ab]*?)*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("c","([^ab]*?)*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("c","([^ab]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("cccc","([^ab]*?)*",[trim]))), +?line <<"::ccc">> = iolist_to_binary(join(re:split("cccc","([^ab]*?)*",[{parts, + 2}]))), +?line <<"::::::::">> = iolist_to_binary(join(re:split("cccc","([^ab]*?)*",[]))), +?line <<"b::a::b::a">> = iolist_to_binary(join(re:split("baba","([^ab]*?)*",[trim]))), +?line <<"b::aba">> = iolist_to_binary(join(re:split("baba","([^ab]*?)*",[{parts, + 2}]))), +?line <<"b::a::b::a::">> = iolist_to_binary(join(re:split("baba","([^ab]*?)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","(?>a*)*",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","(?>a*)*",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","(?>a*)*",[]))), +?line <<":b:c:d:e">> = iolist_to_binary(join(re:split("aaabcde","(?>a*)*",[trim]))), +?line <<":bcde">> = iolist_to_binary(join(re:split("aaabcde","(?>a*)*",[{parts, + 2}]))), +?line <<":b:c:d:e:">> = iolist_to_binary(join(re:split("aaabcde","(?>a*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaaa","((?>a*))*",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("aaaaa","((?>a*))*",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("aaaaa","((?>a*))*",[]))), +?line <<"::b::b">> = iolist_to_binary(join(re:split("aabbaa","((?>a*))*",[trim]))), +?line <<"::bbaa">> = iolist_to_binary(join(re:split("aabbaa","((?>a*))*",[{parts, + 2}]))), +?line <<"::b::b::">> = iolist_to_binary(join(re:split("aabbaa","((?>a*))*",[]))), +?line <<"a::a::a::a::a">> = iolist_to_binary(join(re:split("aaaaa","((?>a*?))*",[trim]))), +?line <<"a::aaaa">> = iolist_to_binary(join(re:split("aaaaa","((?>a*?))*",[{parts, + 2}]))), +?line <<"a::a::a::a::a::">> = iolist_to_binary(join(re:split("aaaaa","((?>a*?))*",[]))), +?line <<"a::a::b::b::a::a">> = iolist_to_binary(join(re:split("aabbaa","((?>a*?))*",[trim]))), +?line <<"a::abbaa">> = iolist_to_binary(join(re:split("aabbaa","((?>a*?))*",[{parts, + 2}]))), +?line <<"a::a::b::b::a::a::">> = iolist_to_binary(join(re:split("aabbaa","((?>a*?))*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12-sep-98","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12-sep-98","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12-sep-98","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("12-09-98","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("12-09-98","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("12-09-98","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended]))), +?line <<"sep-12-98">> = iolist_to_binary(join(re:split("sep-12-98","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended, + trim]))), +?line <<"sep-12-98">> = iolist_to_binary(join(re:split("sep-12-98","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended, + {parts, + 2}]))), +?line <<"sep-12-98">> = iolist_to_binary(join(re:split("sep-12-98","(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ",[extended]))), +?line <<"foo:foo">> = iolist_to_binary(join(re:split("foobarfoo","(?<=(foo))bar\\1",[trim]))), +?line <<"foo:foo:">> = iolist_to_binary(join(re:split("foobarfoo","(?<=(foo))bar\\1",[{parts, + 2}]))), +?line <<"foo:foo:">> = iolist_to_binary(join(re:split("foobarfoo","(?<=(foo))bar\\1",[]))), +?line <<"foo:foo:tling">> = iolist_to_binary(join(re:split("foobarfootling","(?<=(foo))bar\\1",[trim]))), +?line <<"foo:foo:tling">> = iolist_to_binary(join(re:split("foobarfootling","(?<=(foo))bar\\1",[{parts, + 2}]))), +?line <<"foo:foo:tling">> = iolist_to_binary(join(re:split("foobarfootling","(?<=(foo))bar\\1",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo))bar\\1",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo))bar\\1",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo))bar\\1",[]))), +?line <<"foobar">> = iolist_to_binary(join(re:split("foobar","(?<=(foo))bar\\1",[trim]))), +?line <<"foobar">> = iolist_to_binary(join(re:split("foobar","(?<=(foo))bar\\1",[{parts, + 2}]))), +?line <<"foobar">> = iolist_to_binary(join(re:split("foobar","(?<=(foo))bar\\1",[]))), +?line <<"barfoo">> = iolist_to_binary(join(re:split("barfoo","(?<=(foo))bar\\1",[trim]))), +?line <<"barfoo">> = iolist_to_binary(join(re:split("barfoo","(?<=(foo))bar\\1",[{parts, + 2}]))), +?line <<"barfoo">> = iolist_to_binary(join(re:split("barfoo","(?<=(foo))bar\\1",[]))), +?line <<"">> = iolist_to_binary(join(re:split("saturday","(?i:saturday|sunday)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("saturday","(?i:saturday|sunday)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("saturday","(?i:saturday|sunday)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("sunday","(?i:saturday|sunday)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("sunday","(?i:saturday|sunday)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("sunday","(?i:saturday|sunday)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Saturday","(?i:saturday|sunday)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("Saturday","(?i:saturday|sunday)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("Saturday","(?i:saturday|sunday)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Sunday","(?i:saturday|sunday)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("Sunday","(?i:saturday|sunday)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("Sunday","(?i:saturday|sunday)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("SATURDAY","(?i:saturday|sunday)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("SATURDAY","(?i:saturday|sunday)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("SATURDAY","(?i:saturday|sunday)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("SUNDAY","(?i:saturday|sunday)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("SUNDAY","(?i:saturday|sunday)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("SUNDAY","(?i:saturday|sunday)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("SunDay","(?i:saturday|sunday)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("SunDay","(?i:saturday|sunday)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("SunDay","(?i:saturday|sunday)",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcx","(a(?i)bc|BB)x",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcx","(a(?i)bc|BB)x",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcx","(a(?i)bc|BB)x",[]))), +?line <<":aBC">> = iolist_to_binary(join(re:split("aBCx","(a(?i)bc|BB)x",[trim]))), +?line <<":aBC:">> = iolist_to_binary(join(re:split("aBCx","(a(?i)bc|BB)x",[{parts, + 2}]))), +?line <<":aBC:">> = iolist_to_binary(join(re:split("aBCx","(a(?i)bc|BB)x",[]))), +?line <<":bb">> = iolist_to_binary(join(re:split("bbx","(a(?i)bc|BB)x",[trim]))), +?line <<":bb:">> = iolist_to_binary(join(re:split("bbx","(a(?i)bc|BB)x",[{parts, + 2}]))), +?line <<":bb:">> = iolist_to_binary(join(re:split("bbx","(a(?i)bc|BB)x",[]))), +?line <<":BB">> = iolist_to_binary(join(re:split("BBx","(a(?i)bc|BB)x",[trim]))), +?line <<":BB:">> = iolist_to_binary(join(re:split("BBx","(a(?i)bc|BB)x",[{parts, + 2}]))), +?line <<":BB:">> = iolist_to_binary(join(re:split("BBx","(a(?i)bc|BB)x",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)bc|BB)x",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)bc|BB)x",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)bc|BB)x",[]))), +?line <<"abcX">> = iolist_to_binary(join(re:split("abcX","(a(?i)bc|BB)x",[trim]))), +?line <<"abcX">> = iolist_to_binary(join(re:split("abcX","(a(?i)bc|BB)x",[{parts, + 2}]))), +?line <<"abcX">> = iolist_to_binary(join(re:split("abcX","(a(?i)bc|BB)x",[]))), +?line <<"aBCX">> = iolist_to_binary(join(re:split("aBCX","(a(?i)bc|BB)x",[trim]))), +?line <<"aBCX">> = iolist_to_binary(join(re:split("aBCX","(a(?i)bc|BB)x",[{parts, + 2}]))), +?line <<"aBCX">> = iolist_to_binary(join(re:split("aBCX","(a(?i)bc|BB)x",[]))), +?line <<"bbX">> = iolist_to_binary(join(re:split("bbX","(a(?i)bc|BB)x",[trim]))), +?line <<"bbX">> = iolist_to_binary(join(re:split("bbX","(a(?i)bc|BB)x",[{parts, + 2}]))), +?line <<"bbX">> = iolist_to_binary(join(re:split("bbX","(a(?i)bc|BB)x",[]))), +?line <<"BBX">> = iolist_to_binary(join(re:split("BBX","(a(?i)bc|BB)x",[trim]))), +?line <<"BBX">> = iolist_to_binary(join(re:split("BBX","(a(?i)bc|BB)x",[{parts, + 2}]))), +?line <<"BBX">> = iolist_to_binary(join(re:split("BBX","(a(?i)bc|BB)x",[]))), +?line <<":ac">> = iolist_to_binary(join(re:split("ac","^([ab](?i)[cd]|[ef])",[trim]))), +?line <<":ac:">> = iolist_to_binary(join(re:split("ac","^([ab](?i)[cd]|[ef])",[{parts, + 2}]))), +?line <<":ac:">> = iolist_to_binary(join(re:split("ac","^([ab](?i)[cd]|[ef])",[]))), +?line <<":aC">> = iolist_to_binary(join(re:split("aC","^([ab](?i)[cd]|[ef])",[trim]))), +?line <<":aC:">> = iolist_to_binary(join(re:split("aC","^([ab](?i)[cd]|[ef])",[{parts, + 2}]))), +?line <<":aC:">> = iolist_to_binary(join(re:split("aC","^([ab](?i)[cd]|[ef])",[]))), +?line <<":bD">> = iolist_to_binary(join(re:split("bD","^([ab](?i)[cd]|[ef])",[trim]))), +?line <<":bD:">> = iolist_to_binary(join(re:split("bD","^([ab](?i)[cd]|[ef])",[{parts, + 2}]))), +?line <<":bD:">> = iolist_to_binary(join(re:split("bD","^([ab](?i)[cd]|[ef])",[]))), +?line <<":e:lephant">> = iolist_to_binary(join(re:split("elephant","^([ab](?i)[cd]|[ef])",[trim]))), +?line <<":e:lephant">> = iolist_to_binary(join(re:split("elephant","^([ab](?i)[cd]|[ef])",[{parts, + 2}]))), +?line <<":e:lephant">> = iolist_to_binary(join(re:split("elephant","^([ab](?i)[cd]|[ef])",[]))), +?line <<":E:urope">> = iolist_to_binary(join(re:split("Europe","^([ab](?i)[cd]|[ef])",[trim]))), +?line <<":E:urope">> = iolist_to_binary(join(re:split("Europe","^([ab](?i)[cd]|[ef])",[{parts, + 2}]))), +?line <<":E:urope">> = iolist_to_binary(join(re:split("Europe","^([ab](?i)[cd]|[ef])",[]))), +?line <<":f:rog">> = iolist_to_binary(join(re:split("frog","^([ab](?i)[cd]|[ef])",[trim]))), +?line <<":f:rog">> = iolist_to_binary(join(re:split("frog","^([ab](?i)[cd]|[ef])",[{parts, + 2}]))), +?line <<":f:rog">> = iolist_to_binary(join(re:split("frog","^([ab](?i)[cd]|[ef])",[]))), +?line <<":F:rance">> = iolist_to_binary(join(re:split("France","^([ab](?i)[cd]|[ef])",[trim]))), +?line <<":F:rance">> = iolist_to_binary(join(re:split("France","^([ab](?i)[cd]|[ef])",[{parts, + 2}]))), +?line <<":F:rance">> = iolist_to_binary(join(re:split("France","^([ab](?i)[cd]|[ef])",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([ab](?i)[cd]|[ef])",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([ab](?i)[cd]|[ef])",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([ab](?i)[cd]|[ef])",[]))), +?line <<"Africa">> = iolist_to_binary(join(re:split("Africa","^([ab](?i)[cd]|[ef])",[trim]))), +?line <<"Africa">> = iolist_to_binary(join(re:split("Africa","^([ab](?i)[cd]|[ef])",[{parts, + 2}]))), +?line <<"Africa">> = iolist_to_binary(join(re:split("Africa","^([ab](?i)[cd]|[ef])",[]))), +?line <<":ab">> = iolist_to_binary(join(re:split("ab","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))), +?line <<":ab:">> = iolist_to_binary(join(re:split("ab","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts, + 2}]))), +?line <<":ab:">> = iolist_to_binary(join(re:split("ab","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))), +?line <<":aBd">> = iolist_to_binary(join(re:split("aBd","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))), +?line <<":aBd:">> = iolist_to_binary(join(re:split("aBd","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts, + 2}]))), +?line <<":aBd:">> = iolist_to_binary(join(re:split("aBd","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))), +?line <<":xy">> = iolist_to_binary(join(re:split("xy","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))), +?line <<":xy:">> = iolist_to_binary(join(re:split("xy","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts, + 2}]))), +?line <<":xy:">> = iolist_to_binary(join(re:split("xy","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))), +?line <<":xY">> = iolist_to_binary(join(re:split("xY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))), +?line <<":xY:">> = iolist_to_binary(join(re:split("xY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts, + 2}]))), +?line <<":xY:">> = iolist_to_binary(join(re:split("xY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))), +?line <<":z:ebra">> = iolist_to_binary(join(re:split("zebra","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))), +?line <<":z:ebra">> = iolist_to_binary(join(re:split("zebra","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts, + 2}]))), +?line <<":z:ebra">> = iolist_to_binary(join(re:split("zebra","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))), +?line <<":Z:ambesi">> = iolist_to_binary(join(re:split("Zambesi","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))), +?line <<":Z:ambesi">> = iolist_to_binary(join(re:split("Zambesi","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts, + 2}]))), +?line <<":Z:ambesi">> = iolist_to_binary(join(re:split("Zambesi","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))), +?line <<"aCD">> = iolist_to_binary(join(re:split("aCD","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))), +?line <<"aCD">> = iolist_to_binary(join(re:split("aCD","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts, + 2}]))), +?line <<"aCD">> = iolist_to_binary(join(re:split("aCD","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))), +?line <<"XY">> = iolist_to_binary(join(re:split("XY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))), +?line <<"XY">> = iolist_to_binary(join(re:split("XY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts, + 2}]))), +?line <<"XY">> = iolist_to_binary(join(re:split("XY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))), +?line <<"foo +">> = iolist_to_binary(join(re:split("foo +bar","(?<=foo\\n)^bar",[multiline,trim]))), +?line <<"foo +:">> = iolist_to_binary(join(re:split("foo +bar","(?<=foo\\n)^bar",[multiline,{parts,2}]))), +?line <<"foo +:">> = iolist_to_binary(join(re:split("foo +bar","(?<=foo\\n)^bar",[multiline]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=foo\\n)^bar",[multiline, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=foo\\n)^bar",[multiline, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=foo\\n)^bar",[multiline]))), +?line <<"bar">> = iolist_to_binary(join(re:split("bar","(?<=foo\\n)^bar",[multiline, + trim]))), +?line <<"bar">> = iolist_to_binary(join(re:split("bar","(?<=foo\\n)^bar",[multiline, + {parts, + 2}]))), +?line <<"bar">> = iolist_to_binary(join(re:split("bar","(?<=foo\\n)^bar",[multiline]))), +?line <<"baz +bar">> = iolist_to_binary(join(re:split("baz +bar","(?<=foo\\n)^bar",[multiline,trim]))), +?line <<"baz +bar">> = iolist_to_binary(join(re:split("baz +bar","(?<=foo\\n)^bar",[multiline,{parts,2}]))), +?line <<"baz +bar">> = iolist_to_binary(join(re:split("baz +bar","(?<=foo\\n)^bar",[multiline]))), +?line <<"bar">> = iolist_to_binary(join(re:split("barbaz","(?<=(?> = iolist_to_binary(join(re:split("barbaz","(?<=(?> = iolist_to_binary(join(re:split("barbaz","(?<=(?> = iolist_to_binary(join(re:split("barbarbaz","(?<=(?> = iolist_to_binary(join(re:split("barbarbaz","(?<=(?> = iolist_to_binary(join(re:split("barbarbaz","(?<=(?> = iolist_to_binary(join(re:split("koobarbaz","(?<=(?> = iolist_to_binary(join(re:split("koobarbaz","(?<=(?> = iolist_to_binary(join(re:split("koobarbaz","(?<=(?> = iolist_to_binary(join(re:split("*** Failers","(?<=(?> = iolist_to_binary(join(re:split("*** Failers","(?<=(?> = iolist_to_binary(join(re:split("*** Failers","(?<=(?> = iolist_to_binary(join(re:split("baz","(?<=(?> = iolist_to_binary(join(re:split("baz","(?<=(?> = iolist_to_binary(join(re:split("baz","(?<=(?> = iolist_to_binary(join(re:split("foobarbaz","(?<=(?> = iolist_to_binary(join(re:split("foobarbaz","(?<=(?> = iolist_to_binary(join(re:split("foobarbaz","(?<=(?> = iolist_to_binary(join(re:split("a","^(a\\1?){4}$",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?){4}$",[]))), +?line <<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?){4}$",[trim]))), +?line <<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?){4}$",[]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?){4}$",[trim]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?){4}$",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaa","^(a\\1?){4}$",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaa","^(a\\1?){4}$",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?){4}$",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?){4}$",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<":aaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<":a:a:a:a">> = iolist_to_binary(join(re:split("aaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<":a:a:a:a:">> = iolist_to_binary(join(re:split("aaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<":a:a:a:a:">> = iolist_to_binary(join(re:split("aaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<":a:aa:a:a">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<":a:aa:a:a:">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<":a:aa:a:a:">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<":a:aa:a:aa">> = iolist_to_binary(join(re:split("aaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<":a:aa:a:aa:">> = iolist_to_binary(join(re:split("aaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<":a:aa:a:aa:">> = iolist_to_binary(join(re:split("aaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<":a:aa:aaa:a">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<":a:aa:aaa:a:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<":a:aa:aaa:a:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<":a:aa:aaa:aaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<":a:aa:aaa:aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<":a:aa:aaa:aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))), +?line <<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","abc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","abc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","abc",[]))), +?line <<"x:y">> = iolist_to_binary(join(re:split("xabcy","abc",[trim]))), +?line <<"x:y">> = iolist_to_binary(join(re:split("xabcy","abc",[{parts, + 2}]))), +?line <<"x:y">> = iolist_to_binary(join(re:split("xabcy","abc",[]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ababc","abc",[trim]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("ababc","abc",[{parts, + 2}]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("ababc","abc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[]))), +?line <<"xbc">> = iolist_to_binary(join(re:split("xbc","abc",[trim]))), +?line <<"xbc">> = iolist_to_binary(join(re:split("xbc","abc",[{parts, + 2}]))), +?line <<"xbc">> = iolist_to_binary(join(re:split("xbc","abc",[]))), +?line <<"axc">> = iolist_to_binary(join(re:split("axc","abc",[trim]))), +?line <<"axc">> = iolist_to_binary(join(re:split("axc","abc",[{parts, + 2}]))), +?line <<"axc">> = iolist_to_binary(join(re:split("axc","abc",[]))), +?line <<"abx">> = iolist_to_binary(join(re:split("abx","abc",[trim]))), +?line <<"abx">> = iolist_to_binary(join(re:split("abx","abc",[{parts, + 2}]))), +?line <<"abx">> = iolist_to_binary(join(re:split("abx","abc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","ab*c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab*c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab*c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","ab*bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab*bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab*bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbc","ab*bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbc","ab*bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbc","ab*bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbbbc","ab*bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab*bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab*bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbbbc",".{1}",[trim]))), +?line <<":bbbbc">> = iolist_to_binary(join(re:split("abbbbc",".{1}",[{parts, + 2}]))), +?line <<"::::::">> = iolist_to_binary(join(re:split("abbbbc",".{1}",[]))), +?line <<":bc">> = iolist_to_binary(join(re:split("abbbbc",".{3,4}",[trim]))), +?line <<":bc">> = iolist_to_binary(join(re:split("abbbbc",".{3,4}",[{parts, + 2}]))), +?line <<":bc">> = iolist_to_binary(join(re:split("abbbbc",".{3,4}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbbbc","ab{0,}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{0,}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{0,}bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbc","ab+bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbc","ab+bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbc","ab+bc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","ab+bc",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","ab+bc",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","ab+bc",[]))), +?line <<"abq">> = iolist_to_binary(join(re:split("abq","ab+bc",[trim]))), +?line <<"abq">> = iolist_to_binary(join(re:split("abq","ab+bc",[{parts, + 2}]))), +?line <<"abq">> = iolist_to_binary(join(re:split("abq","ab+bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbbbc","ab+bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab+bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab+bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbbbc","ab{1,}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,}bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbbbc","ab{3,4}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{3,4}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbbbc","ab{3,4}bc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}bc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}bc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}bc",[]))), +?line <<"abq">> = iolist_to_binary(join(re:split("abq","ab{4,5}bc",[trim]))), +?line <<"abq">> = iolist_to_binary(join(re:split("abq","ab{4,5}bc",[{parts, + 2}]))), +?line <<"abq">> = iolist_to_binary(join(re:split("abq","ab{4,5}bc",[]))), +?line <<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","ab{4,5}bc",[trim]))), +?line <<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","ab{4,5}bc",[{parts, + 2}]))), +?line <<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","ab{4,5}bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abbc","ab?bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abbc","ab?bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abbc","ab?bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","ab?bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab?bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab?bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","ab{0,1}bc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab{0,1}bc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab{0,1}bc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","ab?c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab?c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab?c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","ab{0,1}c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab{0,1}c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","ab{0,1}c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","^abc$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^abc$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^abc$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[]))), +?line <<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","^abc$",[trim]))), +?line <<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","^abc$",[{parts, + 2}]))), +?line <<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","^abc$",[]))), +?line <<"abcc">> = iolist_to_binary(join(re:split("abcc","^abc$",[trim]))), +?line <<"abcc">> = iolist_to_binary(join(re:split("abcc","^abc$",[{parts, + 2}]))), +?line <<"abcc">> = iolist_to_binary(join(re:split("abcc","^abc$",[]))), +?line <<":c">> = iolist_to_binary(join(re:split("abcc","^abc",[trim]))), +?line <<":c">> = iolist_to_binary(join(re:split("abcc","^abc",[{parts, + 2}]))), +?line <<":c">> = iolist_to_binary(join(re:split("abcc","^abc",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("aabc","abc$",[trim]))), +?line <<"a:">> = iolist_to_binary(join(re:split("aabc","abc$",[{parts, + 2}]))), +?line <<"a:">> = iolist_to_binary(join(re:split("aabc","abc$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("aabc","abc$",[trim]))), +?line <<"a:">> = iolist_to_binary(join(re:split("aabc","abc$",[{parts, + 2}]))), +?line <<"a:">> = iolist_to_binary(join(re:split("aabc","abc$",[]))), +?line <<"aabcd">> = iolist_to_binary(join(re:split("aabcd","abc$",[trim]))), +?line <<"aabcd">> = iolist_to_binary(join(re:split("aabcd","abc$",[{parts, + 2}]))), +?line <<"aabcd">> = iolist_to_binary(join(re:split("aabcd","abc$",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","$",[trim]))), +?line <<"abc:">> = iolist_to_binary(join(re:split("abc","$",[{parts, + 2}]))), +?line <<"abc:">> = iolist_to_binary(join(re:split("abc","$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","a.c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","a.c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","a.c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("axc","a.c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("axc","a.c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("axc","a.c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("axyzc","a.*c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("axyzc","a.*c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("axyzc","a.*c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abd","a[bc]d",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abd","a[bc]d",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abd","a[bc]d",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bc]d",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bc]d",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bc]d",[]))), +?line <<"axyzd">> = iolist_to_binary(join(re:split("axyzd","a[bc]d",[trim]))), +?line <<"axyzd">> = iolist_to_binary(join(re:split("axyzd","a[bc]d",[{parts, + 2}]))), +?line <<"axyzd">> = iolist_to_binary(join(re:split("axyzd","a[bc]d",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","a[bc]d",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","a[bc]d",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","a[bc]d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ace","a[b-d]e",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ace","a[b-d]e",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ace","a[b-d]e",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("aac","a[b-d]",[trim]))), +?line <<"a:">> = iolist_to_binary(join(re:split("aac","a[b-d]",[{parts, + 2}]))), +?line <<"a:">> = iolist_to_binary(join(re:split("aac","a[b-d]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a-","a[-b]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a-","a[-b]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a-","a[-b]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a-","a[b-]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a-","a[b-]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a-","a[b-]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a]","a]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a]","a]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a]","a]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a]b","a[]]b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a]b","a[]]b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a]b","a[]]b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aed","a[^bc]d",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aed","a[^bc]d",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aed","a[^bc]d",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^bc]d",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^bc]d",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^bc]d",[]))), +?line <<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[trim]))), +?line <<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[{parts, + 2}]))), +?line <<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[]))), +?line <<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[trim]))), +?line <<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[{parts, + 2}]))), +?line <<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("adc","a[^-b]c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("adc","a[^-b]c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("adc","a[^-b]c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("adc","a[^]b]c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("adc","a[^]b]c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("adc","a[^]b]c",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^]b]c",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^]b]c",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^]b]c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a-c","a[^]b]c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a-c","a[^]b]c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a-c","a[^]b]c",[]))), +?line <<"a]c">> = iolist_to_binary(join(re:split("a]c","a[^]b]c",[trim]))), +?line <<"a]c">> = iolist_to_binary(join(re:split("a]c","a[^]b]c",[{parts, + 2}]))), +?line <<"a]c">> = iolist_to_binary(join(re:split("a]c","a[^]b]c",[]))), +?line <<":-">> = iolist_to_binary(join(re:split("a-","\\ba\\b",[trim]))), +?line <<":-">> = iolist_to_binary(join(re:split("a-","\\ba\\b",[{parts, + 2}]))), +?line <<":-">> = iolist_to_binary(join(re:split("a-","\\ba\\b",[]))), +?line <<"-">> = iolist_to_binary(join(re:split("-a","\\ba\\b",[trim]))), +?line <<"-:">> = iolist_to_binary(join(re:split("-a","\\ba\\b",[{parts, + 2}]))), +?line <<"-:">> = iolist_to_binary(join(re:split("-a","\\ba\\b",[]))), +?line <<"-:-">> = iolist_to_binary(join(re:split("-a-","\\ba\\b",[trim]))), +?line <<"-:-">> = iolist_to_binary(join(re:split("-a-","\\ba\\b",[{parts, + 2}]))), +?line <<"-:-">> = iolist_to_binary(join(re:split("-a-","\\ba\\b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\by\\b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\by\\b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\by\\b",[]))), +?line <<"xy">> = iolist_to_binary(join(re:split("xy","\\by\\b",[trim]))), +?line <<"xy">> = iolist_to_binary(join(re:split("xy","\\by\\b",[{parts, + 2}]))), +?line <<"xy">> = iolist_to_binary(join(re:split("xy","\\by\\b",[]))), +?line <<"yz">> = iolist_to_binary(join(re:split("yz","\\by\\b",[trim]))), +?line <<"yz">> = iolist_to_binary(join(re:split("yz","\\by\\b",[{parts, + 2}]))), +?line <<"yz">> = iolist_to_binary(join(re:split("yz","\\by\\b",[]))), +?line <<"xyz">> = iolist_to_binary(join(re:split("xyz","\\by\\b",[trim]))), +?line <<"xyz">> = iolist_to_binary(join(re:split("xyz","\\by\\b",[{parts, + 2}]))), +?line <<"xyz">> = iolist_to_binary(join(re:split("xyz","\\by\\b",[]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","\\Ba\\B",[trim]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","\\Ba\\B",[{parts, + 2}]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","\\Ba\\B",[]))), +?line <<"a-">> = iolist_to_binary(join(re:split("a-","\\Ba\\B",[trim]))), +?line <<"a-">> = iolist_to_binary(join(re:split("a-","\\Ba\\B",[{parts, + 2}]))), +?line <<"a-">> = iolist_to_binary(join(re:split("a-","\\Ba\\B",[]))), +?line <<"-a">> = iolist_to_binary(join(re:split("-a","\\Ba\\B",[trim]))), +?line <<"-a">> = iolist_to_binary(join(re:split("-a","\\Ba\\B",[{parts, + 2}]))), +?line <<"-a">> = iolist_to_binary(join(re:split("-a","\\Ba\\B",[]))), +?line <<"-a-">> = iolist_to_binary(join(re:split("-a-","\\Ba\\B",[trim]))), +?line <<"-a-">> = iolist_to_binary(join(re:split("-a-","\\Ba\\B",[{parts, + 2}]))), +?line <<"-a-">> = iolist_to_binary(join(re:split("-a-","\\Ba\\B",[]))), +?line <<"x">> = iolist_to_binary(join(re:split("xy","\\By\\b",[trim]))), +?line <<"x:">> = iolist_to_binary(join(re:split("xy","\\By\\b",[{parts, + 2}]))), +?line <<"x:">> = iolist_to_binary(join(re:split("xy","\\By\\b",[]))), +?line <<":z">> = iolist_to_binary(join(re:split("yz","\\by\\B",[trim]))), +?line <<":z">> = iolist_to_binary(join(re:split("yz","\\by\\B",[{parts, + 2}]))), +?line <<":z">> = iolist_to_binary(join(re:split("yz","\\by\\B",[]))), +?line <<"x:z">> = iolist_to_binary(join(re:split("xyz","\\By\\B",[trim]))), +?line <<"x:z">> = iolist_to_binary(join(re:split("xyz","\\By\\B",[{parts, + 2}]))), +?line <<"x:z">> = iolist_to_binary(join(re:split("xyz","\\By\\B",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","\\W",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","\\W",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","\\W",[]))), +?line <<"::::Failers">> = iolist_to_binary(join(re:split("*** Failers","\\W",[trim]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\W",[{parts, + 2}]))), +?line <<"::::Failers">> = iolist_to_binary(join(re:split("*** Failers","\\W",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","\\W",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","\\W",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","\\W",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","\\W",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","\\W",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","\\W",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a b","a\\sb",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a b","a\\sb",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a b","a\\sb",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Sb",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Sb",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Sb",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[]))), +?line <<"a b">> = iolist_to_binary(join(re:split("a b","a\\Sb",[trim]))), +?line <<"a b">> = iolist_to_binary(join(re:split("a b","a\\Sb",[{parts, + 2}]))), +?line <<"a b">> = iolist_to_binary(join(re:split("a b","a\\Sb",[]))), +?line <<"">> = iolist_to_binary(join(re:split("1","\\d",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("1","\\d",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("1","\\d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","\\D",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","\\D",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","\\D",[]))), +?line <<"">> = iolist_to_binary(join(re:split("*** Failers","\\D",[trim]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\D",[{parts, + 2}]))), +?line <<":::::::::::">> = iolist_to_binary(join(re:split("*** Failers","\\D",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","\\D",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","\\D",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","\\D",[]))), +?line <<"1">> = iolist_to_binary(join(re:split("1","\\D",[trim]))), +?line <<"1">> = iolist_to_binary(join(re:split("1","\\D",[{parts, + 2}]))), +?line <<"1">> = iolist_to_binary(join(re:split("1","\\D",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","[\\w]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","[\\w]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","[\\w]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","[\\W]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[\\W]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[\\W]",[]))), +?line <<"::::Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\W]",[trim]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\W]",[{parts, + 2}]))), +?line <<"::::Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\W]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","[\\W]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[\\W]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[\\W]",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","[\\W]",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","[\\W]",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","[\\W]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a b","a[\\s]b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a b","a[\\s]b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a b","a[\\s]b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[\\S]b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[\\S]b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[\\S]b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[]))), +?line <<"a b">> = iolist_to_binary(join(re:split("a b","a[\\S]b",[trim]))), +?line <<"a b">> = iolist_to_binary(join(re:split("a b","a[\\S]b",[{parts, + 2}]))), +?line <<"a b">> = iolist_to_binary(join(re:split("a b","a[\\S]b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("1","[\\d]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("1","[\\d]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("1","[\\d]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","[\\D]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[\\D]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[\\D]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("*** Failers","[\\D]",[trim]))), +?line <<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\D]",[{parts, + 2}]))), +?line <<":::::::::::">> = iolist_to_binary(join(re:split("*** Failers","[\\D]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","[\\D]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[\\D]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[\\D]",[]))), +?line <<"1">> = iolist_to_binary(join(re:split("1","[\\D]",[trim]))), +?line <<"1">> = iolist_to_binary(join(re:split("1","[\\D]",[{parts, + 2}]))), +?line <<"1">> = iolist_to_binary(join(re:split("1","[\\D]",[]))), +?line <<":c">> = iolist_to_binary(join(re:split("abc","ab|cd",[trim]))), +?line <<":c">> = iolist_to_binary(join(re:split("abc","ab|cd",[{parts, + 2}]))), +?line <<":c">> = iolist_to_binary(join(re:split("abc","ab|cd",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcd","ab|cd",[trim]))), +?line <<":cd">> = iolist_to_binary(join(re:split("abcd","ab|cd",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcd","ab|cd",[]))), +?line <<"d">> = iolist_to_binary(join(re:split("def","()ef",[trim]))), +?line <<"d::">> = iolist_to_binary(join(re:split("def","()ef",[{parts, + 2}]))), +?line <<"d::">> = iolist_to_binary(join(re:split("def","()ef",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a(b","a\\(b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a(b","a\\(b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a(b","a\\(b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab","a\\(*b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","a\\(*b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","a\\(*b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a((b","a\\(*b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a((b","a\\(*b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a((b","a\\(*b",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","a\\\\b",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","a\\\\b",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","a\\\\b",[]))), +?line <<":a:a:bc">> = iolist_to_binary(join(re:split("abc","((a))",[trim]))), +?line <<":a:a:bc">> = iolist_to_binary(join(re:split("abc","((a))",[{parts, + 2}]))), +?line <<":a:a:bc">> = iolist_to_binary(join(re:split("abc","((a))",[]))), +?line <<":a:c">> = iolist_to_binary(join(re:split("abc","(a)b(c)",[trim]))), +?line <<":a:c:">> = iolist_to_binary(join(re:split("abc","(a)b(c)",[{parts, + 2}]))), +?line <<":a:c:">> = iolist_to_binary(join(re:split("abc","(a)b(c)",[]))), +?line <<"aabb">> = iolist_to_binary(join(re:split("aabbabc","a+b+c",[trim]))), +?line <<"aabb:">> = iolist_to_binary(join(re:split("aabbabc","a+b+c",[{parts, + 2}]))), +?line <<"aabb:">> = iolist_to_binary(join(re:split("aabbabc","a+b+c",[]))), +?line <<"aabb">> = iolist_to_binary(join(re:split("aabbabc","a{1,}b{1,}c",[trim]))), +?line <<"aabb:">> = iolist_to_binary(join(re:split("aabbabc","a{1,}b{1,}c",[{parts, + 2}]))), +?line <<"aabb:">> = iolist_to_binary(join(re:split("aabbabc","a{1,}b{1,}c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcabc","a.+?c",[trim]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcabc","a.+?c",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("abcabc","a.+?c",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("ab","(a+|b)*",[trim]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b)*",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b)*",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("ab","(a+|b){0,}",[trim]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b){0,}",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b){0,}",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("ab","(a+|b)+",[trim]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b)+",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b)+",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("ab","(a+|b){1,}",[trim]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b){1,}",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b){1,}",[]))), +?line <<":a::b">> = iolist_to_binary(join(re:split("ab","(a+|b)?",[trim]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("ab","(a+|b)?",[{parts, + 2}]))), +?line <<":a::b:">> = iolist_to_binary(join(re:split("ab","(a+|b)?",[]))), +?line <<":a::b">> = iolist_to_binary(join(re:split("ab","(a+|b){0,1}",[trim]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("ab","(a+|b){0,1}",[{parts, + 2}]))), +?line <<":a::b:">> = iolist_to_binary(join(re:split("ab","(a+|b){0,1}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("cde","[^ab]*",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("cde","[^ab]*",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("cde","[^ab]*",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","abc",[trim]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","abc",[{parts, + 2}]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","abc",[]))), +?line <<":c">> = iolist_to_binary(join(re:split("abbbcd","([abc])*d",[trim]))), +?line <<":c:">> = iolist_to_binary(join(re:split("abbbcd","([abc])*d",[{parts, + 2}]))), +?line <<":c:">> = iolist_to_binary(join(re:split("abbbcd","([abc])*d",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("abcd","([abc])*bcd",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("abcd","([abc])*bcd",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("abcd","([abc])*bcd",[]))), +?line <<"">> = iolist_to_binary(join(re:split("e","a|b|c|d|e",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("e","a|b|c|d|e",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("e","a|b|c|d|e",[]))), +?line <<":e">> = iolist_to_binary(join(re:split("ef","(a|b|c|d|e)f",[trim]))), +?line <<":e:">> = iolist_to_binary(join(re:split("ef","(a|b|c|d|e)f",[{parts, + 2}]))), +?line <<":e:">> = iolist_to_binary(join(re:split("ef","(a|b|c|d|e)f",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcdefg","abcd*efg",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcdefg","abcd*efg",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcdefg","abcd*efg",[]))), +?line <<"x:y:z">> = iolist_to_binary(join(re:split("xabyabbbz","ab*",[trim]))), +?line <<"x:yabbbz">> = iolist_to_binary(join(re:split("xabyabbbz","ab*",[{parts, + 2}]))), +?line <<"x:y:z">> = iolist_to_binary(join(re:split("xabyabbbz","ab*",[]))), +?line <<"x:y:z">> = iolist_to_binary(join(re:split("xayabbbz","ab*",[trim]))), +?line <<"x:yabbbz">> = iolist_to_binary(join(re:split("xayabbbz","ab*",[{parts, + 2}]))), +?line <<"x:y:z">> = iolist_to_binary(join(re:split("xayabbbz","ab*",[]))), +?line <<"ab:cd">> = iolist_to_binary(join(re:split("abcde","(ab|cd)e",[trim]))), +?line <<"ab:cd:">> = iolist_to_binary(join(re:split("abcde","(ab|cd)e",[{parts, + 2}]))), +?line <<"ab:cd:">> = iolist_to_binary(join(re:split("abcde","(ab|cd)e",[]))), +?line <<"">> = iolist_to_binary(join(re:split("hij","[abhgefdc]ij",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("hij","[abhgefdc]ij",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("hij","[abhgefdc]ij",[]))), +?line <<"abcd">> = iolist_to_binary(join(re:split("abcdef","(abc|)ef",[trim]))), +?line <<"abcd::">> = iolist_to_binary(join(re:split("abcdef","(abc|)ef",[{parts, + 2}]))), +?line <<"abcd::">> = iolist_to_binary(join(re:split("abcdef","(abc|)ef",[]))), +?line <<"a:b">> = iolist_to_binary(join(re:split("abcd","(a|b)c*d",[trim]))), +?line <<"a:b:">> = iolist_to_binary(join(re:split("abcd","(a|b)c*d",[{parts, + 2}]))), +?line <<"a:b:">> = iolist_to_binary(join(re:split("abcd","(a|b)c*d",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("abc","(ab|ab*)bc",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("abc","(ab|ab*)bc",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("abc","(ab|ab*)bc",[]))), +?line <<":bc">> = iolist_to_binary(join(re:split("abc","a([bc]*)c*",[trim]))), +?line <<":bc:">> = iolist_to_binary(join(re:split("abc","a([bc]*)c*",[{parts, + 2}]))), +?line <<":bc:">> = iolist_to_binary(join(re:split("abc","a([bc]*)c*",[]))), +?line <<":bc:d">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c*d)",[trim]))), +?line <<":bc:d:">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c*d)",[{parts, + 2}]))), +?line <<":bc:d:">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c*d)",[]))), +?line <<":bc:d">> = iolist_to_binary(join(re:split("abcd","a([bc]+)(c*d)",[trim]))), +?line <<":bc:d:">> = iolist_to_binary(join(re:split("abcd","a([bc]+)(c*d)",[{parts, + 2}]))), +?line <<":bc:d:">> = iolist_to_binary(join(re:split("abcd","a([bc]+)(c*d)",[]))), +?line <<":b:cd">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c+d)",[trim]))), +?line <<":b:cd:">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c+d)",[{parts, + 2}]))), +?line <<":b:cd:">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c+d)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]*dcdcde",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]*dcdcde",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]*dcdcde",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bcd]+dcdcde",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bcd]+dcdcde",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bcd]+dcdcde",[]))), +?line <<"abcde">> = iolist_to_binary(join(re:split("abcde","a[bcd]+dcdcde",[trim]))), +?line <<"abcde">> = iolist_to_binary(join(re:split("abcde","a[bcd]+dcdcde",[{parts, + 2}]))), +?line <<"abcde">> = iolist_to_binary(join(re:split("abcde","a[bcd]+dcdcde",[]))), +?line <<"adcdcde">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]+dcdcde",[trim]))), +?line <<"adcdcde">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]+dcdcde",[{parts, + 2}]))), +?line <<"adcdcde">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]+dcdcde",[]))), +?line <<":ab">> = iolist_to_binary(join(re:split("abc","(ab|a)b*c",[trim]))), +?line <<":ab:">> = iolist_to_binary(join(re:split("abc","(ab|a)b*c",[{parts, + 2}]))), +?line <<":ab:">> = iolist_to_binary(join(re:split("abc","(ab|a)b*c",[]))), +?line <<":abc:a:b:d">> = iolist_to_binary(join(re:split("abcd","((a)(b)c)(d)",[trim]))), +?line <<":abc:a:b:d:">> = iolist_to_binary(join(re:split("abcd","((a)(b)c)(d)",[{parts, + 2}]))), +?line <<":abc:a:b:d:">> = iolist_to_binary(join(re:split("abcd","((a)(b)c)(d)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("alpha","[a-zA-Z_][a-zA-Z0-9_]*",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("alpha","[a-zA-Z_][a-zA-Z0-9_]*",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("alpha","[a-zA-Z_][a-zA-Z0-9_]*",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("abh","^a(bc+|b[eh])g|.h$",[trim]))), +?line <<"a::">> = iolist_to_binary(join(re:split("abh","^a(bc+|b[eh])g|.h$",[{parts, + 2}]))), +?line <<"a::">> = iolist_to_binary(join(re:split("abh","^a(bc+|b[eh])g|.h$",[]))), +?line <<":effgz">> = iolist_to_binary(join(re:split("effgz","(bc+d$|ef*g.|h?i(j|k))",[trim]))), +?line <<":effgz::">> = iolist_to_binary(join(re:split("effgz","(bc+d$|ef*g.|h?i(j|k))",[{parts, + 2}]))), +?line <<":effgz::">> = iolist_to_binary(join(re:split("effgz","(bc+d$|ef*g.|h?i(j|k))",[]))), +?line <<":ij:j">> = iolist_to_binary(join(re:split("ij","(bc+d$|ef*g.|h?i(j|k))",[trim]))), +?line <<":ij:j:">> = iolist_to_binary(join(re:split("ij","(bc+d$|ef*g.|h?i(j|k))",[{parts, + 2}]))), +?line <<":ij:j:">> = iolist_to_binary(join(re:split("ij","(bc+d$|ef*g.|h?i(j|k))",[]))), +?line <<"r:effgz">> = iolist_to_binary(join(re:split("reffgz","(bc+d$|ef*g.|h?i(j|k))",[trim]))), +?line <<"r:effgz::">> = iolist_to_binary(join(re:split("reffgz","(bc+d$|ef*g.|h?i(j|k))",[{parts, + 2}]))), +?line <<"r:effgz::">> = iolist_to_binary(join(re:split("reffgz","(bc+d$|ef*g.|h?i(j|k))",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[]))), +?line <<"effg">> = iolist_to_binary(join(re:split("effg","(bc+d$|ef*g.|h?i(j|k))",[trim]))), +?line <<"effg">> = iolist_to_binary(join(re:split("effg","(bc+d$|ef*g.|h?i(j|k))",[{parts, + 2}]))), +?line <<"effg">> = iolist_to_binary(join(re:split("effg","(bc+d$|ef*g.|h?i(j|k))",[]))), +?line <<"bcdd">> = iolist_to_binary(join(re:split("bcdd","(bc+d$|ef*g.|h?i(j|k))",[trim]))), +?line <<"bcdd">> = iolist_to_binary(join(re:split("bcdd","(bc+d$|ef*g.|h?i(j|k))",[{parts, + 2}]))), +?line <<"bcdd">> = iolist_to_binary(join(re:split("bcdd","(bc+d$|ef*g.|h?i(j|k))",[]))), +?line <<":a:a:a:a:a:a:a:a:a:a">> = iolist_to_binary(join(re:split("a","((((((((((a))))))))))",[trim]))), +?line <<":a:a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("a","((((((((((a))))))))))",[{parts, + 2}]))), +?line <<":a:a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("a","((((((((((a))))))))))",[]))), +?line <<":a:a:a:a:a:a:a:a:a:a">> = iolist_to_binary(join(re:split("aa","((((((((((a))))))))))\\10",[trim]))), +?line <<":a:a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("aa","((((((((((a))))))))))\\10",[{parts, + 2}]))), +?line <<":a:a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("aa","((((((((((a))))))))))\\10",[]))), +?line <<":a:a:a:a:a:a:a:a:a">> = iolist_to_binary(join(re:split("a","(((((((((a)))))))))",[trim]))), +?line <<":a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("a","(((((((((a)))))))))",[{parts, + 2}]))), +?line <<":a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("a","(((((((((a)))))))))",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[]))), +?line <<"aa">> = iolist_to_binary(join(re:split("aa","multiple words of text",[trim]))), +?line <<"aa">> = iolist_to_binary(join(re:split("aa","multiple words of text",[{parts, + 2}]))), +?line <<"aa">> = iolist_to_binary(join(re:split("aa","multiple words of text",[]))), +?line <<"uh-uh">> = iolist_to_binary(join(re:split("uh-uh","multiple words of text",[trim]))), +?line <<"uh-uh">> = iolist_to_binary(join(re:split("uh-uh","multiple words of text",[{parts, + 2}]))), +?line <<"uh-uh">> = iolist_to_binary(join(re:split("uh-uh","multiple words of text",[]))), +?line <<":, yeah">> = iolist_to_binary(join(re:split("multiple words, yeah","multiple words",[trim]))), +?line <<":, yeah">> = iolist_to_binary(join(re:split("multiple words, yeah","multiple words",[{parts, + 2}]))), +?line <<":, yeah">> = iolist_to_binary(join(re:split("multiple words, yeah","multiple words",[]))), +?line <<":ab:de">> = iolist_to_binary(join(re:split("abcde","(.*)c(.*)",[trim]))), +?line <<":ab:de:">> = iolist_to_binary(join(re:split("abcde","(.*)c(.*)",[{parts, + 2}]))), +?line <<":ab:de:">> = iolist_to_binary(join(re:split("abcde","(.*)c(.*)",[]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("(a, b)","\\((.*), (.*)\\)",[trim]))), +?line <<":a:b:">> = iolist_to_binary(join(re:split("(a, b)","\\((.*), (.*)\\)",[{parts, + 2}]))), +?line <<":a:b:">> = iolist_to_binary(join(re:split("(a, b)","\\((.*), (.*)\\)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abcd","abcd",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","abcd",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcd","abcd",[]))), +?line <<":bc">> = iolist_to_binary(join(re:split("abcd","a(bc)d",[trim]))), +?line <<":bc:">> = iolist_to_binary(join(re:split("abcd","a(bc)d",[{parts, + 2}]))), +?line <<":bc:">> = iolist_to_binary(join(re:split("abcd","a(bc)d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ac","a[-]?c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ac","a[-]?c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ac","a[-]?c",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abcabc","([a-c]*)\\1",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcabc","([a-c]*)\\1",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abcabc","([a-c]*)\\1",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("a","(a)|\\1",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("a","(a)|\\1",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("a","(a)|\\1",[]))), +?line <<"*** F:a:ilers">> = iolist_to_binary(join(re:split("*** Failers","(a)|\\1",[trim]))), +?line <<"*** F:a:ilers">> = iolist_to_binary(join(re:split("*** Failers","(a)|\\1",[{parts, + 2}]))), +?line <<"*** F:a:ilers">> = iolist_to_binary(join(re:split("*** Failers","(a)|\\1",[]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("ab","(a)|\\1",[trim]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("ab","(a)|\\1",[{parts, + 2}]))), +?line <<":a:b">> = iolist_to_binary(join(re:split("ab","(a)|\\1",[]))), +?line <<"x">> = iolist_to_binary(join(re:split("x","(a)|\\1",[trim]))), +?line <<"x">> = iolist_to_binary(join(re:split("x","(a)|\\1",[{parts, + 2}]))), +?line <<"x">> = iolist_to_binary(join(re:split("x","(a)|\\1",[]))), +?line <<":bb:b:b:cbc:c">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2)*",[trim]))), +?line <<":bb:b:bcbc">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2)*",[{parts, + 2}]))), +?line <<":bb:b:b:cbc:c:">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2)*",[]))), +?line <<":cbc:c">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2){3}",[trim]))), +?line <<":cbc:c:">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2){3}",[{parts, + 2}]))), +?line <<":cbc:c:">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2){3}",[]))), +?line <<"aaaxabaxbaax:bbax:b:a">> = iolist_to_binary(join(re:split("aaaxabaxbaaxbbax","((\\3|b)\\2(a)x)+",[trim]))), +?line <<"aaaxabaxbaax:bbax:b:a:">> = iolist_to_binary(join(re:split("aaaxabaxbaaxbbax","((\\3|b)\\2(a)x)+",[{parts, + 2}]))), +?line <<"aaaxabaxbaax:bbax:b:a:">> = iolist_to_binary(join(re:split("aaaxabaxbaaxbbax","((\\3|b)\\2(a)x)+",[]))), +?line <<"bbaababbabaaaaa:bba:b:a">> = iolist_to_binary(join(re:split("bbaababbabaaaaabbaaaabba","((\\3|b)\\2(a)){2,}",[trim]))), +?line <<"bbaababbabaaaaa:bba:b:a:">> = iolist_to_binary(join(re:split("bbaababbabaaaaabbaaaabba","((\\3|b)\\2(a)){2,}",[{parts, + 2}]))), +?line <<"bbaababbabaaaaa:bba:b:a:">> = iolist_to_binary(join(re:split("bbaababbabaaaaabbaaaabba","((\\3|b)\\2(a)){2,}",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ABC","abc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","abc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","abc",[caseless]))), +?line <<"X:Y">> = iolist_to_binary(join(re:split("XABCY","abc",[caseless, + trim]))), +?line <<"X:Y">> = iolist_to_binary(join(re:split("XABCY","abc",[caseless, + {parts, + 2}]))), +?line <<"X:Y">> = iolist_to_binary(join(re:split("XABCY","abc",[caseless]))), +?line <<"AB">> = iolist_to_binary(join(re:split("ABABC","abc",[caseless, + trim]))), +?line <<"AB:">> = iolist_to_binary(join(re:split("ABABC","abc",[caseless, + {parts, + 2}]))), +?line <<"AB:">> = iolist_to_binary(join(re:split("ABABC","abc",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[caseless]))), +?line <<"aaxabxbaxbbx">> = iolist_to_binary(join(re:split("aaxabxbaxbbx","abc",[caseless, + trim]))), +?line <<"aaxabxbaxbbx">> = iolist_to_binary(join(re:split("aaxabxbaxbbx","abc",[caseless, + {parts, + 2}]))), +?line <<"aaxabxbaxbbx">> = iolist_to_binary(join(re:split("aaxabxbaxbbx","abc",[caseless]))), +?line <<"XBC">> = iolist_to_binary(join(re:split("XBC","abc",[caseless, + trim]))), +?line <<"XBC">> = iolist_to_binary(join(re:split("XBC","abc",[caseless, + {parts, + 2}]))), +?line <<"XBC">> = iolist_to_binary(join(re:split("XBC","abc",[caseless]))), +?line <<"AXC">> = iolist_to_binary(join(re:split("AXC","abc",[caseless, + trim]))), +?line <<"AXC">> = iolist_to_binary(join(re:split("AXC","abc",[caseless, + {parts, + 2}]))), +?line <<"AXC">> = iolist_to_binary(join(re:split("AXC","abc",[caseless]))), +?line <<"ABX">> = iolist_to_binary(join(re:split("ABX","abc",[caseless, + trim]))), +?line <<"ABX">> = iolist_to_binary(join(re:split("ABX","abc",[caseless, + {parts, + 2}]))), +?line <<"ABX">> = iolist_to_binary(join(re:split("ABX","abc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABC","ab*c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab*c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab*c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABC","ab*bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab*bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab*bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABBC","ab*bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBC","ab*bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBC","ab*bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABBBBC","ab*?bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab*?bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab*?bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABBBBC","ab{0,}?bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{0,}?bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{0,}?bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABBC","ab+?bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBC","ab+?bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBC","ab+?bc",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[caseless]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","ab+bc",[caseless, + trim]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","ab+bc",[caseless, + {parts, + 2}]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","ab+bc",[caseless]))), +?line <<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab+bc",[caseless, + trim]))), +?line <<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab+bc",[caseless, + {parts, + 2}]))), +?line <<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab+bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABBBBC","ab+bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab+bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab+bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,}?bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,}?bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,}?bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,3}?bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,3}?bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,3}?bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABBBBC","ab{3,4}?bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{3,4}?bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{3,4}?bc",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}?bc",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}?bc",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}?bc",[caseless]))), +?line <<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab{4,5}?bc",[caseless, + trim]))), +?line <<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab{4,5}?bc",[caseless, + {parts, + 2}]))), +?line <<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab{4,5}?bc",[caseless]))), +?line <<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","ab{4,5}?bc",[caseless, + trim]))), +?line <<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","ab{4,5}?bc",[caseless, + {parts, + 2}]))), +?line <<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","ab{4,5}?bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABBC","ab??bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBC","ab??bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABBC","ab??bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABC","ab??bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab??bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab??bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?bc",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?bc",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?bc",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABC","ab??c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab??c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab??c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABC","^abc$",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","^abc$",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","^abc$",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[caseless]))), +?line <<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","^abc$",[caseless, + trim]))), +?line <<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","^abc$",[caseless, + {parts, + 2}]))), +?line <<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","^abc$",[caseless]))), +?line <<"ABCC">> = iolist_to_binary(join(re:split("ABCC","^abc$",[caseless, + trim]))), +?line <<"ABCC">> = iolist_to_binary(join(re:split("ABCC","^abc$",[caseless, + {parts, + 2}]))), +?line <<"ABCC">> = iolist_to_binary(join(re:split("ABCC","^abc$",[caseless]))), +?line <<":C">> = iolist_to_binary(join(re:split("ABCC","^abc",[caseless, + trim]))), +?line <<":C">> = iolist_to_binary(join(re:split("ABCC","^abc",[caseless, + {parts, + 2}]))), +?line <<":C">> = iolist_to_binary(join(re:split("ABCC","^abc",[caseless]))), +?line <<"A">> = iolist_to_binary(join(re:split("AABC","abc$",[caseless, + trim]))), +?line <<"A:">> = iolist_to_binary(join(re:split("AABC","abc$",[caseless, + {parts, + 2}]))), +?line <<"A:">> = iolist_to_binary(join(re:split("AABC","abc$",[caseless]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","^",[caseless, + trim]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","^",[caseless, + {parts, + 2}]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","^",[caseless]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","$",[caseless, + trim]))), +?line <<"ABC:">> = iolist_to_binary(join(re:split("ABC","$",[caseless, + {parts, + 2}]))), +?line <<"ABC:">> = iolist_to_binary(join(re:split("ABC","$",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABC","a.c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","a.c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABC","a.c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("AXC","a.c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("AXC","a.c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("AXC","a.c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("AXYZC","a.*?c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("AXYZC","a.*?c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("AXYZC","a.*?c",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.*c",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.*c",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.*c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("AABC","a.*c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("AABC","a.*c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("AABC","a.*c",[caseless]))), +?line <<"AXYZD">> = iolist_to_binary(join(re:split("AXYZD","a.*c",[caseless, + trim]))), +?line <<"AXYZD">> = iolist_to_binary(join(re:split("AXYZD","a.*c",[caseless, + {parts, + 2}]))), +?line <<"AXYZD">> = iolist_to_binary(join(re:split("AXYZD","a.*c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABD","a[bc]d",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABD","a[bc]d",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABD","a[bc]d",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ACE","a[b-d]e",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ACE","a[b-d]e",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ACE","a[b-d]e",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[b-d]e",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[b-d]e",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[b-d]e",[caseless]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","a[b-d]e",[caseless, + trim]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","a[b-d]e",[caseless, + {parts, + 2}]))), +?line <<"ABC">> = iolist_to_binary(join(re:split("ABC","a[b-d]e",[caseless]))), +?line <<"ABD">> = iolist_to_binary(join(re:split("ABD","a[b-d]e",[caseless, + trim]))), +?line <<"ABD">> = iolist_to_binary(join(re:split("ABD","a[b-d]e",[caseless, + {parts, + 2}]))), +?line <<"ABD">> = iolist_to_binary(join(re:split("ABD","a[b-d]e",[caseless]))), +?line <<"A">> = iolist_to_binary(join(re:split("AAC","a[b-d]",[caseless, + trim]))), +?line <<"A:">> = iolist_to_binary(join(re:split("AAC","a[b-d]",[caseless, + {parts, + 2}]))), +?line <<"A:">> = iolist_to_binary(join(re:split("AAC","a[b-d]",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("A-","a[-b]",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("A-","a[-b]",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("A-","a[-b]",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("A-","a[b-]",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("A-","a[b-]",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("A-","a[b-]",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("A]","a]",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("A]","a]",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("A]","a]",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("A]B","a[]]b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("A]B","a[]]b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("A]B","a[]]b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("AED","a[^bc]d",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("AED","a[^bc]d",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("AED","a[^bc]d",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ADC","a[^-b]c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ADC","a[^-b]c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ADC","a[^-b]c",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^-b]c",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^-b]c",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^-b]c",[caseless]))), +?line <<"ABD">> = iolist_to_binary(join(re:split("ABD","a[^-b]c",[caseless, + trim]))), +?line <<"ABD">> = iolist_to_binary(join(re:split("ABD","a[^-b]c",[caseless, + {parts, + 2}]))), +?line <<"ABD">> = iolist_to_binary(join(re:split("ABD","a[^-b]c",[caseless]))), +?line <<"A-C">> = iolist_to_binary(join(re:split("A-C","a[^-b]c",[caseless, + trim]))), +?line <<"A-C">> = iolist_to_binary(join(re:split("A-C","a[^-b]c",[caseless, + {parts, + 2}]))), +?line <<"A-C">> = iolist_to_binary(join(re:split("A-C","a[^-b]c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ADC","a[^]b]c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ADC","a[^]b]c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ADC","a[^]b]c",[caseless]))), +?line <<":C">> = iolist_to_binary(join(re:split("ABC","ab|cd",[caseless, + trim]))), +?line <<":C">> = iolist_to_binary(join(re:split("ABC","ab|cd",[caseless, + {parts, + 2}]))), +?line <<":C">> = iolist_to_binary(join(re:split("ABC","ab|cd",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABCD","ab|cd",[caseless, + trim]))), +?line <<":CD">> = iolist_to_binary(join(re:split("ABCD","ab|cd",[caseless, + {parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("ABCD","ab|cd",[caseless]))), +?line <<"D">> = iolist_to_binary(join(re:split("DEF","()ef",[caseless, + trim]))), +?line <<"D::">> = iolist_to_binary(join(re:split("DEF","()ef",[caseless, + {parts, + 2}]))), +?line <<"D::">> = iolist_to_binary(join(re:split("DEF","()ef",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","$b",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","$b",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","$b",[caseless]))), +?line <<"A]C">> = iolist_to_binary(join(re:split("A]C","$b",[caseless, + trim]))), +?line <<"A]C">> = iolist_to_binary(join(re:split("A]C","$b",[caseless, + {parts, + 2}]))), +?line <<"A]C">> = iolist_to_binary(join(re:split("A]C","$b",[caseless]))), +?line <<"B">> = iolist_to_binary(join(re:split("B","$b",[caseless, + trim]))), +?line <<"B">> = iolist_to_binary(join(re:split("B","$b",[caseless, + {parts, + 2}]))), +?line <<"B">> = iolist_to_binary(join(re:split("B","$b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("A(B","a\\(b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("A(B","a\\(b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("A(B","a\\(b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("AB","a\\(*b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("AB","a\\(*b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("AB","a\\(*b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("A((B","a\\(*b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("A((B","a\\(*b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("A((B","a\\(*b",[caseless]))), +?line <<"A">> = iolist_to_binary(join(re:split("A","a\\\\b",[caseless, + notbol, + trim]))), +?line <<"A">> = iolist_to_binary(join(re:split("A","a\\\\b",[caseless, + notbol, + {parts, + 2}]))), +?line <<"A">> = iolist_to_binary(join(re:split("A","a\\\\b",[caseless, + notbol]))), +?line <<":A:A:BC">> = iolist_to_binary(join(re:split("ABC","((a))",[caseless, + trim]))), +?line <<":A:A:BC">> = iolist_to_binary(join(re:split("ABC","((a))",[caseless, + {parts, + 2}]))), +?line <<":A:A:BC">> = iolist_to_binary(join(re:split("ABC","((a))",[caseless]))), +?line <<":A:C">> = iolist_to_binary(join(re:split("ABC","(a)b(c)",[caseless, + trim]))), +?line <<":A:C:">> = iolist_to_binary(join(re:split("ABC","(a)b(c)",[caseless, + {parts, + 2}]))), +?line <<":A:C:">> = iolist_to_binary(join(re:split("ABC","(a)b(c)",[caseless]))), +?line <<"AABB">> = iolist_to_binary(join(re:split("AABBABC","a+b+c",[caseless, + trim]))), +?line <<"AABB:">> = iolist_to_binary(join(re:split("AABBABC","a+b+c",[caseless, + {parts, + 2}]))), +?line <<"AABB:">> = iolist_to_binary(join(re:split("AABBABC","a+b+c",[caseless]))), +?line <<"AABB">> = iolist_to_binary(join(re:split("AABBABC","a{1,}b{1,}c",[caseless, + trim]))), +?line <<"AABB:">> = iolist_to_binary(join(re:split("AABBABC","a{1,}b{1,}c",[caseless, + {parts, + 2}]))), +?line <<"AABB:">> = iolist_to_binary(join(re:split("AABBABC","a{1,}b{1,}c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABCABC","a.+?c",[caseless, + trim]))), +?line <<":ABC">> = iolist_to_binary(join(re:split("ABCABC","a.+?c",[caseless, + {parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("ABCABC","a.+?c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABCABC","a.*?c",[caseless, + trim]))), +?line <<":ABC">> = iolist_to_binary(join(re:split("ABCABC","a.*?c",[caseless, + {parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("ABCABC","a.*?c",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABCABC","a.{0,5}?c",[caseless, + trim]))), +?line <<":ABC">> = iolist_to_binary(join(re:split("ABCABC","a.{0,5}?c",[caseless, + {parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("ABCABC","a.{0,5}?c",[caseless]))), +?line <<":B">> = iolist_to_binary(join(re:split("AB","(a+|b)*",[caseless, + trim]))), +?line <<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b)*",[caseless, + {parts, + 2}]))), +?line <<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b)*",[caseless]))), +?line <<":B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,}",[caseless, + trim]))), +?line <<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b){0,}",[caseless, + {parts, + 2}]))), +?line <<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b){0,}",[caseless]))), +?line <<":B">> = iolist_to_binary(join(re:split("AB","(a+|b)+",[caseless, + trim]))), +?line <<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b)+",[caseless, + {parts, + 2}]))), +?line <<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b)+",[caseless]))), +?line <<":B">> = iolist_to_binary(join(re:split("AB","(a+|b){1,}",[caseless, + trim]))), +?line <<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b){1,}",[caseless, + {parts, + 2}]))), +?line <<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b){1,}",[caseless]))), +?line <<":A::B">> = iolist_to_binary(join(re:split("AB","(a+|b)?",[caseless, + trim]))), +?line <<":A:B">> = iolist_to_binary(join(re:split("AB","(a+|b)?",[caseless, + {parts, + 2}]))), +?line <<":A::B:">> = iolist_to_binary(join(re:split("AB","(a+|b)?",[caseless]))), +?line <<":A::B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}",[caseless, + trim]))), +?line <<":A:B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}",[caseless, + {parts, + 2}]))), +?line <<":A::B:">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}",[caseless]))), +?line <<":A::B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}?",[caseless, + trim]))), +?line <<":A:B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}?",[caseless, + {parts, + 2}]))), +?line <<":A::B:">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}?",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("CDE","[^ab]*",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("CDE","[^ab]*",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("CDE","[^ab]*",[caseless]))), +?line <<":C">> = iolist_to_binary(join(re:split("ABBBCD","([abc])*d",[caseless, + trim]))), +?line <<":C:">> = iolist_to_binary(join(re:split("ABBBCD","([abc])*d",[caseless, + {parts, + 2}]))), +?line <<":C:">> = iolist_to_binary(join(re:split("ABBBCD","([abc])*d",[caseless]))), +?line <<":A">> = iolist_to_binary(join(re:split("ABCD","([abc])*bcd",[caseless, + trim]))), +?line <<":A:">> = iolist_to_binary(join(re:split("ABCD","([abc])*bcd",[caseless, + {parts, + 2}]))), +?line <<":A:">> = iolist_to_binary(join(re:split("ABCD","([abc])*bcd",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("E","a|b|c|d|e",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("E","a|b|c|d|e",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("E","a|b|c|d|e",[caseless]))), +?line <<":E">> = iolist_to_binary(join(re:split("EF","(a|b|c|d|e)f",[caseless, + trim]))), +?line <<":E:">> = iolist_to_binary(join(re:split("EF","(a|b|c|d|e)f",[caseless, + {parts, + 2}]))), +?line <<":E:">> = iolist_to_binary(join(re:split("EF","(a|b|c|d|e)f",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABCDEFG","abcd*efg",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABCDEFG","abcd*efg",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABCDEFG","abcd*efg",[caseless]))), +?line <<"X:Y:Z">> = iolist_to_binary(join(re:split("XABYABBBZ","ab*",[caseless, + trim]))), +?line <<"X:YABBBZ">> = iolist_to_binary(join(re:split("XABYABBBZ","ab*",[caseless, + {parts, + 2}]))), +?line <<"X:Y:Z">> = iolist_to_binary(join(re:split("XABYABBBZ","ab*",[caseless]))), +?line <<"X:Y:Z">> = iolist_to_binary(join(re:split("XAYABBBZ","ab*",[caseless, + trim]))), +?line <<"X:YABBBZ">> = iolist_to_binary(join(re:split("XAYABBBZ","ab*",[caseless, + {parts, + 2}]))), +?line <<"X:Y:Z">> = iolist_to_binary(join(re:split("XAYABBBZ","ab*",[caseless]))), +?line <<"AB:CD">> = iolist_to_binary(join(re:split("ABCDE","(ab|cd)e",[caseless, + trim]))), +?line <<"AB:CD:">> = iolist_to_binary(join(re:split("ABCDE","(ab|cd)e",[caseless, + {parts, + 2}]))), +?line <<"AB:CD:">> = iolist_to_binary(join(re:split("ABCDE","(ab|cd)e",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("HIJ","[abhgefdc]ij",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("HIJ","[abhgefdc]ij",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("HIJ","[abhgefdc]ij",[caseless]))), +?line <<"ABCDE">> = iolist_to_binary(join(re:split("ABCDE","^(ab|cd)e",[caseless, + trim]))), +?line <<"ABCDE">> = iolist_to_binary(join(re:split("ABCDE","^(ab|cd)e",[caseless, + {parts, + 2}]))), +?line <<"ABCDE">> = iolist_to_binary(join(re:split("ABCDE","^(ab|cd)e",[caseless]))), +?line <<"ABCD">> = iolist_to_binary(join(re:split("ABCDEF","(abc|)ef",[caseless, + trim]))), +?line <<"ABCD::">> = iolist_to_binary(join(re:split("ABCDEF","(abc|)ef",[caseless, + {parts, + 2}]))), +?line <<"ABCD::">> = iolist_to_binary(join(re:split("ABCDEF","(abc|)ef",[caseless]))), +?line <<"A:B">> = iolist_to_binary(join(re:split("ABCD","(a|b)c*d",[caseless, + trim]))), +?line <<"A:B:">> = iolist_to_binary(join(re:split("ABCD","(a|b)c*d",[caseless, + {parts, + 2}]))), +?line <<"A:B:">> = iolist_to_binary(join(re:split("ABCD","(a|b)c*d",[caseless]))), +?line <<":A">> = iolist_to_binary(join(re:split("ABC","(ab|ab*)bc",[caseless, + trim]))), +?line <<":A:">> = iolist_to_binary(join(re:split("ABC","(ab|ab*)bc",[caseless, + {parts, + 2}]))), +?line <<":A:">> = iolist_to_binary(join(re:split("ABC","(ab|ab*)bc",[caseless]))), +?line <<":BC">> = iolist_to_binary(join(re:split("ABC","a([bc]*)c*",[caseless, + trim]))), +?line <<":BC:">> = iolist_to_binary(join(re:split("ABC","a([bc]*)c*",[caseless, + {parts, + 2}]))), +?line <<":BC:">> = iolist_to_binary(join(re:split("ABC","a([bc]*)c*",[caseless]))), +?line <<":BC:D">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c*d)",[caseless, + trim]))), +?line <<":BC:D:">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c*d)",[caseless, + {parts, + 2}]))), +?line <<":BC:D:">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c*d)",[caseless]))), +?line <<":BC:D">> = iolist_to_binary(join(re:split("ABCD","a([bc]+)(c*d)",[caseless, + trim]))), +?line <<":BC:D:">> = iolist_to_binary(join(re:split("ABCD","a([bc]+)(c*d)",[caseless, + {parts, + 2}]))), +?line <<":BC:D:">> = iolist_to_binary(join(re:split("ABCD","a([bc]+)(c*d)",[caseless]))), +?line <<":B:CD">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c+d)",[caseless, + trim]))), +?line <<":B:CD:">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c+d)",[caseless, + {parts, + 2}]))), +?line <<":B:CD:">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c+d)",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ADCDCDE","a[bcd]*dcdcde",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ADCDCDE","a[bcd]*dcdcde",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ADCDCDE","a[bcd]*dcdcde",[caseless]))), +?line <<":AB">> = iolist_to_binary(join(re:split("ABC","(ab|a)b*c",[caseless, + trim]))), +?line <<":AB:">> = iolist_to_binary(join(re:split("ABC","(ab|a)b*c",[caseless, + {parts, + 2}]))), +?line <<":AB:">> = iolist_to_binary(join(re:split("ABC","(ab|a)b*c",[caseless]))), +?line <<":ABC:A:B:D">> = iolist_to_binary(join(re:split("ABCD","((a)(b)c)(d)",[caseless, + trim]))), +?line <<":ABC:A:B:D:">> = iolist_to_binary(join(re:split("ABCD","((a)(b)c)(d)",[caseless, + {parts, + 2}]))), +?line <<":ABC:A:B:D:">> = iolist_to_binary(join(re:split("ABCD","((a)(b)c)(d)",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ALPHA","[a-zA-Z_][a-zA-Z0-9_]*",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ALPHA","[a-zA-Z_][a-zA-Z0-9_]*",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ALPHA","[a-zA-Z_][a-zA-Z0-9_]*",[caseless]))), +?line <<"A">> = iolist_to_binary(join(re:split("ABH","^a(bc+|b[eh])g|.h$",[caseless, + trim]))), +?line <<"A::">> = iolist_to_binary(join(re:split("ABH","^a(bc+|b[eh])g|.h$",[caseless, + {parts, + 2}]))), +?line <<"A::">> = iolist_to_binary(join(re:split("ABH","^a(bc+|b[eh])g|.h$",[caseless]))), +?line <<":EFFGZ">> = iolist_to_binary(join(re:split("EFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless, + trim]))), +?line <<":EFFGZ::">> = iolist_to_binary(join(re:split("EFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless, + {parts, + 2}]))), +?line <<":EFFGZ::">> = iolist_to_binary(join(re:split("EFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless]))), +?line <<":IJ:J">> = iolist_to_binary(join(re:split("IJ","(bc+d$|ef*g.|h?i(j|k))",[caseless, + trim]))), +?line <<":IJ:J:">> = iolist_to_binary(join(re:split("IJ","(bc+d$|ef*g.|h?i(j|k))",[caseless, + {parts, + 2}]))), +?line <<":IJ:J:">> = iolist_to_binary(join(re:split("IJ","(bc+d$|ef*g.|h?i(j|k))",[caseless]))), +?line <<"R:EFFGZ">> = iolist_to_binary(join(re:split("REFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless, + trim]))), +?line <<"R:EFFGZ::">> = iolist_to_binary(join(re:split("REFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless, + {parts, + 2}]))), +?line <<"R:EFFGZ::">> = iolist_to_binary(join(re:split("REFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[caseless]))), +?line <<"ADCDCDE">> = iolist_to_binary(join(re:split("ADCDCDE","(bc+d$|ef*g.|h?i(j|k))",[caseless, + trim]))), +?line <<"ADCDCDE">> = iolist_to_binary(join(re:split("ADCDCDE","(bc+d$|ef*g.|h?i(j|k))",[caseless, + {parts, + 2}]))), +?line <<"ADCDCDE">> = iolist_to_binary(join(re:split("ADCDCDE","(bc+d$|ef*g.|h?i(j|k))",[caseless]))), +?line <<"EFFG">> = iolist_to_binary(join(re:split("EFFG","(bc+d$|ef*g.|h?i(j|k))",[caseless, + trim]))), +?line <<"EFFG">> = iolist_to_binary(join(re:split("EFFG","(bc+d$|ef*g.|h?i(j|k))",[caseless, + {parts, + 2}]))), +?line <<"EFFG">> = iolist_to_binary(join(re:split("EFFG","(bc+d$|ef*g.|h?i(j|k))",[caseless]))), +?line <<"BCDD">> = iolist_to_binary(join(re:split("BCDD","(bc+d$|ef*g.|h?i(j|k))",[caseless, + trim]))), +?line <<"BCDD">> = iolist_to_binary(join(re:split("BCDD","(bc+d$|ef*g.|h?i(j|k))",[caseless, + {parts, + 2}]))), +?line <<"BCDD">> = iolist_to_binary(join(re:split("BCDD","(bc+d$|ef*g.|h?i(j|k))",[caseless]))), +?line <<":A:A:A:A:A:A:A:A:A:A">> = iolist_to_binary(join(re:split("A","((((((((((a))))))))))",[caseless, + trim]))), +?line <<":A:A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("A","((((((((((a))))))))))",[caseless, + {parts, + 2}]))), +?line <<":A:A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("A","((((((((((a))))))))))",[caseless]))), +?line <<":A:A:A:A:A:A:A:A:A:A">> = iolist_to_binary(join(re:split("AA","((((((((((a))))))))))\\10",[caseless, + trim]))), +?line <<":A:A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("AA","((((((((((a))))))))))\\10",[caseless, + {parts, + 2}]))), +?line <<":A:A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("AA","((((((((((a))))))))))\\10",[caseless]))), +?line <<":A:A:A:A:A:A:A:A:A">> = iolist_to_binary(join(re:split("A","(((((((((a)))))))))",[caseless, + trim]))), +?line <<":A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("A","(((((((((a)))))))))",[caseless, + {parts, + 2}]))), +?line <<":A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("A","(((((((((a)))))))))",[caseless]))), +?line <<":A">> = iolist_to_binary(join(re:split("A","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))",[caseless, + trim]))), +?line <<":A:">> = iolist_to_binary(join(re:split("A","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))",[caseless, + {parts, + 2}]))), +?line <<":A:">> = iolist_to_binary(join(re:split("A","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))",[caseless]))), +?line <<":C">> = iolist_to_binary(join(re:split("C","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))",[caseless, + trim]))), +?line <<":C:">> = iolist_to_binary(join(re:split("C","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))",[caseless, + {parts, + 2}]))), +?line <<":C:">> = iolist_to_binary(join(re:split("C","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[caseless]))), +?line <<"AA">> = iolist_to_binary(join(re:split("AA","multiple words of text",[caseless, + trim]))), +?line <<"AA">> = iolist_to_binary(join(re:split("AA","multiple words of text",[caseless, + {parts, + 2}]))), +?line <<"AA">> = iolist_to_binary(join(re:split("AA","multiple words of text",[caseless]))), +?line <<"UH-UH">> = iolist_to_binary(join(re:split("UH-UH","multiple words of text",[caseless, + trim]))), +?line <<"UH-UH">> = iolist_to_binary(join(re:split("UH-UH","multiple words of text",[caseless, + {parts, + 2}]))), +?line <<"UH-UH">> = iolist_to_binary(join(re:split("UH-UH","multiple words of text",[caseless]))), +?line <<":, YEAH">> = iolist_to_binary(join(re:split("MULTIPLE WORDS, YEAH","multiple words",[caseless, + trim]))), +?line <<":, YEAH">> = iolist_to_binary(join(re:split("MULTIPLE WORDS, YEAH","multiple words",[caseless, + {parts, + 2}]))), +?line <<":, YEAH">> = iolist_to_binary(join(re:split("MULTIPLE WORDS, YEAH","multiple words",[caseless]))), +?line <<":AB:DE">> = iolist_to_binary(join(re:split("ABCDE","(.*)c(.*)",[caseless, + trim]))), +?line <<":AB:DE:">> = iolist_to_binary(join(re:split("ABCDE","(.*)c(.*)",[caseless, + {parts, + 2}]))), +?line <<":AB:DE:">> = iolist_to_binary(join(re:split("ABCDE","(.*)c(.*)",[caseless]))), +?line <<":A:B">> = iolist_to_binary(join(re:split("(A, B)","\\((.*), (.*)\\)",[caseless, + trim]))), +?line <<":A:B:">> = iolist_to_binary(join(re:split("(A, B)","\\((.*), (.*)\\)",[caseless, + {parts, + 2}]))), +?line <<":A:B:">> = iolist_to_binary(join(re:split("(A, B)","\\((.*), (.*)\\)",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ABCD","abcd",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ABCD","abcd",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ABCD","abcd",[caseless]))), +?line <<":BC">> = iolist_to_binary(join(re:split("ABCD","a(bc)d",[caseless, + trim]))), +?line <<":BC:">> = iolist_to_binary(join(re:split("ABCD","a(bc)d",[caseless, + {parts, + 2}]))), +?line <<":BC:">> = iolist_to_binary(join(re:split("ABCD","a(bc)d",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("AC","a[-]?c",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("AC","a[-]?c",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("AC","a[-]?c",[caseless]))), +?line <<":ABC">> = iolist_to_binary(join(re:split("ABCABC","(abc)\\1",[caseless, + trim]))), +?line <<":ABC:">> = iolist_to_binary(join(re:split("ABCABC","(abc)\\1",[caseless, + {parts, + 2}]))), +?line <<":ABC:">> = iolist_to_binary(join(re:split("ABCABC","(abc)\\1",[caseless]))), +?line <<":ABC">> = iolist_to_binary(join(re:split("ABCABC","([a-c]*)\\1",[caseless, + trim]))), +?line <<":ABC:">> = iolist_to_binary(join(re:split("ABCABC","([a-c]*)\\1",[caseless, + {parts, + 2}]))), +?line <<":ABC:">> = iolist_to_binary(join(re:split("ABCABC","([a-c]*)\\1",[caseless]))), +?line <<"ab">> = iolist_to_binary(join(re:split("abad","a(?!b).",[trim]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("abad","a(?!b).",[{parts, + 2}]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("abad","a(?!b).",[]))), +?line <<"ab">> = iolist_to_binary(join(re:split("abad","a(?=d).",[trim]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("abad","a(?=d).",[{parts, + 2}]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("abad","a(?=d).",[]))), +?line <<"ab">> = iolist_to_binary(join(re:split("abad","a(?=c|d).",[trim]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("abad","a(?=c|d).",[{parts, + 2}]))), +?line <<"ab:">> = iolist_to_binary(join(re:split("abad","a(?=c|d).",[]))), +?line <<":e">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)(.)",[trim]))), +?line <<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)(.)",[{parts, + 2}]))), +?line <<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)(.)",[]))), +?line <<":e">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)*(.)",[trim]))), +?line <<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)*(.)",[{parts, + 2}]))), +?line <<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)*(.)",[]))), +?line <<":e">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)+?(.)",[trim]))), +?line <<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)+?(.)",[{parts, + 2}]))), +?line <<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)+?(.)",[]))), +?line <<":d:bcdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+?(.)",[trim]))), +?line <<":d:bcdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+?(.)",[{parts, + 2}]))), +?line <<":d:bcdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+?(.)",[]))), +?line <<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+(.)",[trim]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+(.)",[{parts, + 2}]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+(.)",[]))), +?line <<":b:cdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){2}(.)",[trim]))), +?line <<":b:cdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){2}(.)",[{parts, + 2}]))), +?line <<":b:cdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){2}(.)",[]))), +?line <<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}(.)",[trim]))), +?line <<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}(.)",[{parts, + 2}]))), +?line <<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}(.)",[]))), +?line <<":d:be">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}?(.)",[trim]))), +?line <<":d:be">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}?(.)",[{parts, + 2}]))), +?line <<":d:be">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}?(.)",[]))), +?line <<":bar:foo:bar">> = iolist_to_binary(join(re:split("foobar","((foo)|(bar))*",[trim]))), +?line <<":bar:foo:bar:">> = iolist_to_binary(join(re:split("foobar","((foo)|(bar))*",[{parts, + 2}]))), +?line <<":bar:foo:bar:">> = iolist_to_binary(join(re:split("foobar","((foo)|(bar))*",[]))), +?line <<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}(.)",[trim]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}(.)",[{parts, + 2}]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}(.)",[]))), +?line <<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}?(.)",[trim]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}?(.)",[{parts, + 2}]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}?(.)",[]))), +?line <<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}(.)",[trim]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}(.)",[{parts, + 2}]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}(.)",[]))), +?line <<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}?(.)",[trim]))), +?line <<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}?(.)",[{parts, + 2}]))), +?line <<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}?(.)",[]))), +?line <<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}(.)",[trim]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}(.)",[{parts, + 2}]))), +?line <<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}(.)",[]))), +?line <<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}?(.)",[trim]))), +?line <<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}?(.)",[{parts, + 2}]))), +?line <<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}?(.)",[]))), +?line <<":c:e">> = iolist_to_binary(join(re:split("ace","a(?:b|(c|e){1,2}?|d)+?(.)",[trim]))), +?line <<":c:e:">> = iolist_to_binary(join(re:split("ace","a(?:b|(c|e){1,2}?|d)+?(.)",[{parts, + 2}]))), +?line <<":c:e:">> = iolist_to_binary(join(re:split("ace","a(?:b|(c|e){1,2}?|d)+?(.)",[]))), +?line <<":A">> = iolist_to_binary(join(re:split("AB","^(.+)?B",[trim]))), +?line <<":A:">> = iolist_to_binary(join(re:split("AB","^(.+)?B",[{parts, + 2}]))), +?line <<":A:">> = iolist_to_binary(join(re:split("AB","^(.+)?B",[]))), +?line <<":.">> = iolist_to_binary(join(re:split(".","^([^a-z])|(\\^)$",[trim]))), +?line <<":.::">> = iolist_to_binary(join(re:split(".","^([^a-z])|(\\^)$",[{parts, + 2}]))), +?line <<":.::">> = iolist_to_binary(join(re:split(".","^([^a-z])|(\\^)$",[]))), +?line <<":OUT">> = iolist_to_binary(join(re:split("<&OUT","^[<>]&",[trim]))), +?line <<":OUT">> = iolist_to_binary(join(re:split("<&OUT","^[<>]&",[{parts, + 2}]))), +?line <<":OUT">> = iolist_to_binary(join(re:split("<&OUT","^[<>]&",[]))), +?line <<":aaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a\\1?){4}$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a\\1?){4}$",[]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","^(a\\1?){4}$",[trim]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[trim]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[]))), +?line <<":aaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a(?(1)\\1)){4}$",[trim]))), +?line <<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a(?(1)\\1)){4}$",[{parts, + 2}]))), +?line <<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a(?(1)\\1)){4}$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a(?(1)\\1)){4}$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a(?(1)\\1)){4}$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a(?(1)\\1)){4}$",[]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a(?(1)\\1)){4}$",[trim]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a(?(1)\\1)){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a(?(1)\\1)){4}$",[]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a(?(1)\\1)){4}$",[trim]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a(?(1)\\1)){4}$",[{parts, + 2}]))), +?line <<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a(?(1)\\1)){4}$",[]))), +?line <<":f:o:o:b:a:r">> = iolist_to_binary(join(re:split("foobar","(?:(f)(o)(o)|(b)(a)(r))*",[trim]))), +?line <<":f:o:o:b:a:r:">> = iolist_to_binary(join(re:split("foobar","(?:(f)(o)(o)|(b)(a)(r))*",[{parts, + 2}]))), +?line <<":f:o:o:b:a:r:">> = iolist_to_binary(join(re:split("foobar","(?:(f)(o)(o)|(b)(a)(r))*",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("ab","(?<=a)b",[trim]))), +?line <<"a:">> = iolist_to_binary(join(re:split("ab","(?<=a)b",[{parts, + 2}]))), +?line <<"a:">> = iolist_to_binary(join(re:split("ab","(?<=a)b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a)b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a)b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a)b",[]))), +?line <<"cb">> = iolist_to_binary(join(re:split("cb","(?<=a)b",[trim]))), +?line <<"cb">> = iolist_to_binary(join(re:split("cb","(?<=a)b",[{parts, + 2}]))), +?line <<"cb">> = iolist_to_binary(join(re:split("cb","(?<=a)b",[]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","(?<=a)b",[trim]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","(?<=a)b",[{parts, + 2}]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","(?<=a)b",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("ab","(?> = iolist_to_binary(join(re:split("ab","(?> = iolist_to_binary(join(re:split("ab","(?> = iolist_to_binary(join(re:split("b","(?> = iolist_to_binary(join(re:split("b","(?> = iolist_to_binary(join(re:split("b","(?> = iolist_to_binary(join(re:split("b","(?> = iolist_to_binary(join(re:split("b","(?> = iolist_to_binary(join(re:split("b","(?> = iolist_to_binary(join(re:split("aba","(?:..)*a",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aba","(?:..)*a",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aba","(?:..)*a",[]))), +?line <<":b">> = iolist_to_binary(join(re:split("aba","(?:..)*?a",[trim]))), +?line <<":ba">> = iolist_to_binary(join(re:split("aba","(?:..)*?a",[{parts, + 2}]))), +?line <<":b:">> = iolist_to_binary(join(re:split("aba","(?:..)*?a",[]))), +?line <<":b:c">> = iolist_to_binary(join(re:split("abc","^(?:b|a(?=(.)))*\\1",[trim]))), +?line <<":b:c">> = iolist_to_binary(join(re:split("abc","^(?:b|a(?=(.)))*\\1",[{parts, + 2}]))), +?line <<":b:c">> = iolist_to_binary(join(re:split("abc","^(?:b|a(?=(.)))*\\1",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(){3,5}",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(){3,5}",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(){3,5}",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aax","^(a+)*ax",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aax","^(a+)*ax",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aax","^(a+)*ax",[]))), +?line <<":a:a">> = iolist_to_binary(join(re:split("aax","^((a|b)+)*ax",[trim]))), +?line <<":a:a:">> = iolist_to_binary(join(re:split("aax","^((a|b)+)*ax",[{parts, + 2}]))), +?line <<":a:a:">> = iolist_to_binary(join(re:split("aax","^((a|b)+)*ax",[]))), +?line <<":a:a">> = iolist_to_binary(join(re:split("aax","^((a|bc)+)*ax",[trim]))), +?line <<":a:a:">> = iolist_to_binary(join(re:split("aax","^((a|bc)+)*ax",[{parts, + 2}]))), +?line <<":a:a:">> = iolist_to_binary(join(re:split("aax","^((a|bc)+)*ax",[]))), +?line <<"c">> = iolist_to_binary(join(re:split("cab","(a|x)*ab",[trim]))), +?line <<"c::">> = iolist_to_binary(join(re:split("cab","(a|x)*ab",[{parts, + 2}]))), +?line <<"c::">> = iolist_to_binary(join(re:split("cab","(a|x)*ab",[]))), +?line <<"c">> = iolist_to_binary(join(re:split("cab","(a)*ab",[trim]))), +?line <<"c::">> = iolist_to_binary(join(re:split("cab","(a)*ab",[{parts, + 2}]))), +?line <<"c::">> = iolist_to_binary(join(re:split("cab","(a)*ab",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab","(?:(?i)a)b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","(?:(?i)a)b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","(?:(?i)a)b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("ab","((?i)a)b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","((?i)a)b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","((?i)a)b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Ab","(?:(?i)a)b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("Ab","(?:(?i)a)b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("Ab","(?:(?i)a)b",[]))), +?line <<":A">> = iolist_to_binary(join(re:split("Ab","((?i)a)b",[trim]))), +?line <<":A:">> = iolist_to_binary(join(re:split("Ab","((?i)a)b",[{parts, + 2}]))), +?line <<":A:">> = iolist_to_binary(join(re:split("Ab","((?i)a)b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?i)a)b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?i)a)b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?i)a)b",[]))), +?line <<"cb">> = iolist_to_binary(join(re:split("cb","(?:(?i)a)b",[trim]))), +?line <<"cb">> = iolist_to_binary(join(re:split("cb","(?:(?i)a)b",[{parts, + 2}]))), +?line <<"cb">> = iolist_to_binary(join(re:split("cb","(?:(?i)a)b",[]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?:(?i)a)b",[trim]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?:(?i)a)b",[{parts, + 2}]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?:(?i)a)b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab","(?i:a)b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","(?i:a)b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","(?i:a)b",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("ab","((?i:a))b",[trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","((?i:a))b",[{parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","((?i:a))b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Ab","(?i:a)b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("Ab","(?i:a)b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("Ab","(?i:a)b",[]))), +?line <<":A">> = iolist_to_binary(join(re:split("Ab","((?i:a))b",[trim]))), +?line <<":A:">> = iolist_to_binary(join(re:split("Ab","((?i:a))b",[{parts, + 2}]))), +?line <<":A:">> = iolist_to_binary(join(re:split("Ab","((?i:a))b",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i:a)b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i:a)b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i:a)b",[]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[trim]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[{parts, + 2}]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[trim]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[{parts, + 2}]))), +?line <<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab","(?:(?-i)a)b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","(?:(?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","(?:(?-i)a)b",[caseless]))), +?line <<":a">> = iolist_to_binary(join(re:split("ab","((?-i)a)b",[caseless, + trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","((?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","((?-i)a)b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless]))), +?line <<":a">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless, + trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless, + trim]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless]))), +?line <<":a">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless, + trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless, + trim]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","(?:(?-i)a)b",[caseless, + trim]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","(?:(?-i)a)b",[caseless, + {parts, + 2}]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","(?:(?-i)a)b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("ab","(?-i:a)b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","(?-i:a)b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","(?-i:a)b",[caseless]))), +?line <<":a">> = iolist_to_binary(join(re:split("ab","((?-i:a))b",[caseless, + trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","((?-i:a))b",[caseless, + {parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("ab","((?-i:a))b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless]))), +?line <<":a">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless, + trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless, + {parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless, + trim]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless, + {parts, + 2}]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless, + trim]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless, + {parts, + 2}]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless]))), +?line <<":a">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless, + trim]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless, + {parts, + 2}]))), +?line <<":a:">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless, + trim]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless, + {parts, + 2}]))), +?line <<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless, + trim]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless, + {parts, + 2}]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?-i:a.))b",[caseless, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?-i:a.))b",[caseless, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?-i:a.))b",[caseless]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","((?-i:a.))b",[caseless, + trim]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","((?-i:a.))b",[caseless, + {parts, + 2}]))), +?line <<"AB">> = iolist_to_binary(join(re:split("AB","((?-i:a.))b",[caseless]))), +?line <<"a +B">> = iolist_to_binary(join(re:split("a +B","((?-i:a.))b",[caseless,trim]))), +?line <<"a +B">> = iolist_to_binary(join(re:split("a +B","((?-i:a.))b",[caseless,{parts,2}]))), +?line <<"a +B">> = iolist_to_binary(join(re:split("a +B","((?-i:a.))b",[caseless]))), +?line <<":a +">> = iolist_to_binary(join(re:split("a +B","((?s-i:a.))b",[caseless,trim]))), +?line <<":a +:">> = iolist_to_binary(join(re:split("a +B","((?s-i:a.))b",[caseless,{parts,2}]))), +?line <<":a +:">> = iolist_to_binary(join(re:split("a +B","((?s-i:a.))b",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("cabbbb","(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("cabbbb","(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("cabbbb","(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))",[]))), +?line <<"">> = iolist_to_binary(join(re:split("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))",[]))), +?line <<":Ab">> = iolist_to_binary(join(re:split("Ab4ab","(ab)\\d\\1",[caseless, + trim]))), +?line <<":Ab:">> = iolist_to_binary(join(re:split("Ab4ab","(ab)\\d\\1",[caseless, + {parts, + 2}]))), +?line <<":Ab:">> = iolist_to_binary(join(re:split("Ab4ab","(ab)\\d\\1",[caseless]))), +?line <<":ab">> = iolist_to_binary(join(re:split("ab4Ab","(ab)\\d\\1",[caseless, + trim]))), +?line <<":ab:">> = iolist_to_binary(join(re:split("ab4Ab","(ab)\\d\\1",[caseless, + {parts, + 2}]))), +?line <<":ab:">> = iolist_to_binary(join(re:split("ab4Ab","(ab)\\d\\1",[caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("foobar1234baz","foo\\w*\\d{4}baz",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("foobar1234baz","foo\\w*\\d{4}baz",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("foobar1234baz","foo\\w*\\d{4}baz",[]))), +?line <<":~~">> = iolist_to_binary(join(re:split("x~~","x(~~)*(?:(?:F)?)?",[trim]))), +?line <<":~~:">> = iolist_to_binary(join(re:split("x~~","x(~~)*(?:(?:F)?)?",[{parts, + 2}]))), +?line <<":~~:">> = iolist_to_binary(join(re:split("x~~","x(~~)*(?:(?:F)?)?",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaac","^a(?#xxx){3}c",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaac","^a(?#xxx){3}c",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaac","^a(?#xxx){3}c",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaac","^a (?#xxx) (?#yyy) {3}c",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaac","^a (?#xxx) (?#yyy) {3}c",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaac","^a (?#xxx) (?#yyy) {3}c",[extended]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?> = iolist_to_binary(join(re:split("*** Failers","(?> = iolist_to_binary(join(re:split("*** Failers","(?> = iolist_to_binary(join(re:split("B +B","(?> = iolist_to_binary(join(re:split("B +B","(?> = iolist_to_binary(join(re:split("B +B","(?> = iolist_to_binary(join(re:split("dbcb","(?> = iolist_to_binary(join(re:split("dbcb","(?> = iolist_to_binary(join(re:split("dbcb","(?> = iolist_to_binary(join(re:split("dbaacb","(?> = iolist_to_binary(join(re:split("dbaacb","(?> = iolist_to_binary(join(re:split("dbaacb","(?> = iolist_to_binary(join(re:split("dbaacb","(?> = iolist_to_binary(join(re:split("dbaacb","(?> = iolist_to_binary(join(re:split("dbaacb","(?> = iolist_to_binary(join(re:split("cdaccb","(?> = iolist_to_binary(join(re:split("cdaccb","(?> = iolist_to_binary(join(re:split("cdaccb","(?> = iolist_to_binary(join(re:split("","^(?:a?b?)*$",[trim]))), +?line <<"">> = iolist_to_binary(join(re:split("","^(?:a?b?)*$",[{parts, + 2}]))), +?line <<"">> = iolist_to_binary(join(re:split("","^(?:a?b?)*$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","^(?:a?b?)*$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^(?:a?b?)*$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^(?:a?b?)*$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab","^(?:a?b?)*$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","^(?:a?b?)*$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab","^(?:a?b?)*$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaa","^(?:a?b?)*$",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaa","^(?:a?b?)*$",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaa","^(?:a?b?)*$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?:a?b?)*$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?:a?b?)*$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?:a?b?)*$",[]))), +?line <<"dbcb">> = iolist_to_binary(join(re:split("dbcb","^(?:a?b?)*$",[trim]))), +?line <<"dbcb">> = iolist_to_binary(join(re:split("dbcb","^(?:a?b?)*$",[{parts, + 2}]))), +?line <<"dbcb">> = iolist_to_binary(join(re:split("dbcb","^(?:a?b?)*$",[]))), +?line <<"a--">> = iolist_to_binary(join(re:split("a--","^(?:a?b?)*$",[trim]))), +?line <<"a--">> = iolist_to_binary(join(re:split("a--","^(?:a?b?)*$",[{parts, + 2}]))), +?line <<"a--">> = iolist_to_binary(join(re:split("a--","^(?:a?b?)*$",[]))), +?line <<"aa--">> = iolist_to_binary(join(re:split("aa--","^(?:a?b?)*$",[trim]))), +?line <<"aa--">> = iolist_to_binary(join(re:split("aa--","^(?:a?b?)*$",[{parts, + 2}]))), +?line <<"aa--">> = iolist_to_binary(join(re:split("aa--","^(?:a?b?)*$",[]))), +?line <<":a +: +:b: +c">> = iolist_to_binary(join(re:split("a +b +c","((?s)^a(.))((?m)^b$)",[trim]))), +?line <<":a +: +:b: +c">> = iolist_to_binary(join(re:split("a +b +c","((?s)^a(.))((?m)^b$)",[{parts,2}]))), +?line <<":a +: +:b: +c">> = iolist_to_binary(join(re:split("a +b +c","((?s)^a(.))((?m)^b$)",[]))), +?line <<"a +:b: +c">> = iolist_to_binary(join(re:split("a +b +c","((?m)^b$)",[trim]))), +?line <<"a +:b: +c">> = iolist_to_binary(join(re:split("a +b +c","((?m)^b$)",[{parts,2}]))), +?line <<"a +:b: +c">> = iolist_to_binary(join(re:split("a +b +c","((?m)^b$)",[]))), +?line <<"a +">> = iolist_to_binary(join(re:split("a +b","(?m)^b",[trim]))), +?line <<"a +:">> = iolist_to_binary(join(re:split("a +b","(?m)^b",[{parts,2}]))), +?line <<"a +:">> = iolist_to_binary(join(re:split("a +b","(?m)^b",[]))), +?line <<"a +:b">> = iolist_to_binary(join(re:split("a +b","(?m)^(b)",[trim]))), +?line <<"a +:b:">> = iolist_to_binary(join(re:split("a +b","(?m)^(b)",[{parts,2}]))), +?line <<"a +:b:">> = iolist_to_binary(join(re:split("a +b","(?m)^(b)",[]))), +?line <<"a +:b">> = iolist_to_binary(join(re:split("a +b","((?m)^b)",[trim]))), +?line <<"a +:b:">> = iolist_to_binary(join(re:split("a +b","((?m)^b)",[{parts,2}]))), +?line <<"a +:b:">> = iolist_to_binary(join(re:split("a +b","((?m)^b)",[]))), +?line <<"a:b">> = iolist_to_binary(join(re:split("a +b","\\n((?m)^b)",[trim]))), +?line <<"a:b:">> = iolist_to_binary(join(re:split("a +b","\\n((?m)^b)",[{parts,2}]))), +?line <<"a:b:">> = iolist_to_binary(join(re:split("a +b","\\n((?m)^b)",[]))), +?line <<"a +b: +">> = iolist_to_binary(join(re:split("a +b +c","((?s).)c(?!.)",[trim]))), +?line <<"a +b: +:">> = iolist_to_binary(join(re:split("a +b +c","((?s).)c(?!.)",[{parts,2}]))), +?line <<"a +b: +:">> = iolist_to_binary(join(re:split("a +b +c","((?s).)c(?!.)",[]))), +?line <<"a +b: +">> = iolist_to_binary(join(re:split("a +b +c","((?s).)c(?!.)",[trim]))), +?line <<"a +b: +:">> = iolist_to_binary(join(re:split("a +b +c","((?s).)c(?!.)",[{parts,2}]))), +?line <<"a +b: +:">> = iolist_to_binary(join(re:split("a +b +c","((?s).)c(?!.)",[]))), +?line <<"a +:b +">> = iolist_to_binary(join(re:split("a +b +c","((?s)b.)c(?!.)",[trim]))), +?line <<"a +:b +:">> = iolist_to_binary(join(re:split("a +b +c","((?s)b.)c(?!.)",[{parts,2}]))), +?line <<"a +:b +:">> = iolist_to_binary(join(re:split("a +b +c","((?s)b.)c(?!.)",[]))), +?line <<"a +:b +">> = iolist_to_binary(join(re:split("a +b +c","((?s)b.)c(?!.)",[trim]))), +?line <<"a +:b +:">> = iolist_to_binary(join(re:split("a +b +c","((?s)b.)c(?!.)",[{parts,2}]))), +?line <<"a +:b +:">> = iolist_to_binary(join(re:split("a +b +c","((?s)b.)c(?!.)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","()^b",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","()^b",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","()^b",[]))), +?line <<"a +b +c">> = iolist_to_binary(join(re:split("a +b +c","()^b",[trim]))), +?line <<"a +b +c">> = iolist_to_binary(join(re:split("a +b +c","()^b",[{parts,2}]))), +?line <<"a +b +c">> = iolist_to_binary(join(re:split("a +b +c","()^b",[]))), +?line <<"a +b +c">> = iolist_to_binary(join(re:split("a +b +c","()^b",[trim]))), +?line <<"a +b +c">> = iolist_to_binary(join(re:split("a +b +c","()^b",[{parts,2}]))), +?line <<"a +b +c">> = iolist_to_binary(join(re:split("a +b +c","()^b",[]))), +?line <<"a +:b: +c">> = iolist_to_binary(join(re:split("a +b +c","((?m)^b)",[trim]))), +?line <<"a +:b: +c">> = iolist_to_binary(join(re:split("a +b +c","((?m)^b)",[{parts,2}]))), +?line <<"a +:b: +c">> = iolist_to_binary(join(re:split("a +b +c","((?m)^b)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(x)?(?(1)a|b)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(x)?(?(1)a|b)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(x)?(?(1)a|b)",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","(x)?(?(1)b|a)",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","(x)?(?(1)b|a)",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","(x)?(?(1)b|a)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","()?(?(1)b|a)",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","()?(?(1)b|a)",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","()?(?(1)b|a)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","()?(?(1)a|b)",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","()?(?(1)a|b)",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","()?(?(1)a|b)",[]))), +?line <<":(:)">> = iolist_to_binary(join(re:split("(blah)","^(\\()?blah(?(1)(\\)))$",[trim]))), +?line <<":(:):">> = iolist_to_binary(join(re:split("(blah)","^(\\()?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<":(:):">> = iolist_to_binary(join(re:split("(blah)","^(\\()?blah(?(1)(\\)))$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("blah","^(\\()?blah(?(1)(\\)))$",[trim]))), +?line <<":::">> = iolist_to_binary(join(re:split("blah","^(\\()?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<":::">> = iolist_to_binary(join(re:split("blah","^(\\()?blah(?(1)(\\)))$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\()?blah(?(1)(\\)))$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\()?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\()?blah(?(1)(\\)))$",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","^(\\()?blah(?(1)(\\)))$",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","^(\\()?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","^(\\()?blah(?(1)(\\)))$",[]))), +?line <<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\()?blah(?(1)(\\)))$",[trim]))), +?line <<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\()?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\()?blah(?(1)(\\)))$",[]))), +?line <<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\()?blah(?(1)(\\)))$",[trim]))), +?line <<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\()?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\()?blah(?(1)(\\)))$",[]))), +?line <<":(:)">> = iolist_to_binary(join(re:split("(blah)","^(\\(+)?blah(?(1)(\\)))$",[trim]))), +?line <<":(:):">> = iolist_to_binary(join(re:split("(blah)","^(\\(+)?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<":(:):">> = iolist_to_binary(join(re:split("(blah)","^(\\(+)?blah(?(1)(\\)))$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("blah","^(\\(+)?blah(?(1)(\\)))$",[trim]))), +?line <<":::">> = iolist_to_binary(join(re:split("blah","^(\\(+)?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<":::">> = iolist_to_binary(join(re:split("blah","^(\\(+)?blah(?(1)(\\)))$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\(+)?blah(?(1)(\\)))$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\(+)?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\(+)?blah(?(1)(\\)))$",[]))), +?line <<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\(+)?blah(?(1)(\\)))$",[trim]))), +?line <<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\(+)?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\(+)?blah(?(1)(\\)))$",[]))), +?line <<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\(+)?blah(?(1)(\\)))$",[trim]))), +?line <<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\(+)?blah(?(1)(\\)))$",[{parts, + 2}]))), +?line <<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\(+)?blah(?(1)(\\)))$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","(?(?!a)b|a)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","(?(?!a)b|a)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","(?(?!a)b|a)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?=a)b|a)",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?=a)b|a)",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?=a)b|a)",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[trim]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[{parts, + 2}]))), +?line <<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","(?(?=a)a|b)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","(?(?=a)a|b)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","(?(?=a)a|b)",[]))), +?line <<"a:a:aab">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[trim]))), +?line <<"a:a:aab:">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[{parts, + 2}]))), +?line <<"a:a:aab:">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[]))), +?line <<":one:">> = iolist_to_binary(join(re:split("one:","(\\w+:)+",[trim]))), +?line <<":one::">> = iolist_to_binary(join(re:split("one:","(\\w+:)+",[{parts, + 2}]))), +?line <<":one::">> = iolist_to_binary(join(re:split("one:","(\\w+:)+",[]))), +?line <<"a:a">> = iolist_to_binary(join(re:split("a","$(?<=^(a))",[trim]))), +?line <<"a:a:">> = iolist_to_binary(join(re:split("a","$(?<=^(a))",[{parts, + 2}]))), +?line <<"a:a:">> = iolist_to_binary(join(re:split("a","$(?<=^(a))",[]))), +?line <<"a:a:aab">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[trim]))), +?line <<"a:a:aab:">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[{parts, + 2}]))), +?line <<"a:a:aab:">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?=(a+?))\\1ab",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?=(a+?))\\1ab",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?=(a+?))\\1ab",[]))), +?line <<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[trim]))), +?line <<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[{parts, + 2}]))), +?line <<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[]))), +?line <<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[trim]))), +?line <<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[{parts, + 2}]))), +?line <<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[]))), +?line <<"::abcd">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[trim]))), +?line <<"::abcd:">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[{parts, + 2}]))), +?line <<"::abcd:">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[]))), +?line <<":xy:z::::abcd">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[trim]))), +?line <<":xy:z::::abcd:">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[{parts, + 2}]))), +?line <<":xy:z::::abcd:">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[]))), +?line <<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[trim]))), +?line <<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[{parts, + 2}]))), +?line <<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[]))), +?line <<"c:aa">> = iolist_to_binary(join(re:split("caab","(a*)b+",[trim]))), +?line <<"c:aa:">> = iolist_to_binary(join(re:split("caab","(a*)b+",[{parts, + 2}]))), +?line <<"c:aa:">> = iolist_to_binary(join(re:split("caab","(a*)b+",[]))), +?line <<"::abcd">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[trim]))), +?line <<"::abcd:">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[{parts, + 2}]))), +?line <<"::abcd:">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[]))), +?line <<":xy:z::::abcd">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[trim]))), +?line <<":xy:z::::abcd:">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[{parts, + 2}]))), +?line <<":xy:z::::abcd:">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[]))), +?line <<"*** ::Failers">> = iolist_to_binary(join(re:split("*** Failers","([\\w:]+::)?(\\w+)$",[trim]))), +?line <<"*** ::Failers:">> = iolist_to_binary(join(re:split("*** Failers","([\\w:]+::)?(\\w+)$",[{parts, + 2}]))), +?line <<"*** ::Failers:">> = iolist_to_binary(join(re:split("*** Failers","([\\w:]+::)?(\\w+)$",[]))), +?line <<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[trim]))), +?line <<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[{parts, + 2}]))), +?line <<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[]))), +?line <<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[trim]))), +?line <<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[{parts, + 2}]))), +?line <<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[]))), +?line <<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[trim]))), +?line <<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[{parts, + 2}]))), +?line <<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[]))), +?line <<"a::[:b]::">> = iolist_to_binary(join(re:split("a:[b]:","([[:]+)",[trim]))), +?line <<"a::[:b]:">> = iolist_to_binary(join(re:split("a:[b]:","([[:]+)",[{parts, + 2}]))), +?line <<"a::[:b]:::">> = iolist_to_binary(join(re:split("a:[b]:","([[:]+)",[]))), +?line <<"a:=[:b]:=">> = iolist_to_binary(join(re:split("a=[b]=","([[=]+)",[trim]))), +?line <<"a:=[:b]=">> = iolist_to_binary(join(re:split("a=[b]=","([[=]+)",[{parts, + 2}]))), +?line <<"a:=[:b]:=:">> = iolist_to_binary(join(re:split("a=[b]=","([[=]+)",[]))), +?line <<"a:.[:b]:.">> = iolist_to_binary(join(re:split("a.[b].","([[.]+)",[trim]))), +?line <<"a:.[:b].">> = iolist_to_binary(join(re:split("a.[b].","([[.]+)",[{parts, + 2}]))), +?line <<"a:.[:b]:.:">> = iolist_to_binary(join(re:split("a.[b].","([[.]+)",[]))), +?line <<":aaab">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[trim]))), +?line <<":aaab:">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[{parts, + 2}]))), +?line <<":aaab:">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[]))), +?line <<":aaa">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[trim]))), +?line <<":aaa:">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[{parts, + 2}]))), +?line <<":aaa:">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[]))), +?line <<"((:x">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[trim]))), +?line <<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[{parts, + 2}]))), +?line <<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Z",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Z",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Z",[]))), +?line <<"aaab">> = iolist_to_binary(join(re:split("aaab","a\\Z",[trim]))), +?line <<"aaab">> = iolist_to_binary(join(re:split("aaab","a\\Z",[{parts, + 2}]))), +?line <<"aaab">> = iolist_to_binary(join(re:split("aaab","a\\Z",[]))), +?line <<"a +b">> = iolist_to_binary(join(re:split("a +b","a\\Z",[trim]))), +?line <<"a +b">> = iolist_to_binary(join(re:split("a +b","a\\Z",[{parts,2}]))), +?line <<"a +b">> = iolist_to_binary(join(re:split("a +b","a\\Z",[]))), +?line <<"a +">> = iolist_to_binary(join(re:split("a +b","b\\Z",[trim]))), +?line <<"a +:">> = iolist_to_binary(join(re:split("a +b","b\\Z",[{parts,2}]))), +?line <<"a +:">> = iolist_to_binary(join(re:split("a +b","b\\Z",[]))), +?line <<"a +">> = iolist_to_binary(join(re:split("a +b","b\\Z",[trim]))), +?line <<"a +:">> = iolist_to_binary(join(re:split("a +b","b\\Z",[{parts,2}]))), +?line <<"a +:">> = iolist_to_binary(join(re:split("a +b","b\\Z",[]))), +?line <<"a +">> = iolist_to_binary(join(re:split("a +b","b\\z",[trim]))), +?line <<"a +:">> = iolist_to_binary(join(re:split("a +b","b\\z",[{parts,2}]))), +?line <<"a +:">> = iolist_to_binary(join(re:split("a +b","b\\z",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","b\\z",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","b\\z",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","b\\z",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("abc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("abc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a-b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a-b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a-b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("0-9","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("0-9","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("0-9","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a.b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a.b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a.b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("5.6.7","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("5.6.7","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("5.6.7","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("the.quick.brown.fox","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("the.quick.brown.fox","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("the.quick.brown.fox","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a100.b200.300c","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a100.b200.300c","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a100.b200.300c","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("12-ab.1245","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("12-ab.1245","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("12-ab.1245","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"">> = iolist_to_binary(join(re:split("","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"">> = iolist_to_binary(join(re:split("","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"">> = iolist_to_binary(join(re:split("","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<".a">> = iolist_to_binary(join(re:split(".a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<".a">> = iolist_to_binary(join(re:split(".a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<".a">> = iolist_to_binary(join(re:split(".a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"-a">> = iolist_to_binary(join(re:split("-a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"-a">> = iolist_to_binary(join(re:split("-a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"-a">> = iolist_to_binary(join(re:split("-a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"a-">> = iolist_to_binary(join(re:split("a-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"a-">> = iolist_to_binary(join(re:split("a-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"a-">> = iolist_to_binary(join(re:split("a-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"a.">> = iolist_to_binary(join(re:split("a.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"a.">> = iolist_to_binary(join(re:split("a.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"a.">> = iolist_to_binary(join(re:split("a.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"a_b">> = iolist_to_binary(join(re:split("a_b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"a_b">> = iolist_to_binary(join(re:split("a_b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"a_b">> = iolist_to_binary(join(re:split("a_b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"a.-">> = iolist_to_binary(join(re:split("a.-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"a.-">> = iolist_to_binary(join(re:split("a.-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"a.-">> = iolist_to_binary(join(re:split("a.-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"a..">> = iolist_to_binary(join(re:split("a..","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"a..">> = iolist_to_binary(join(re:split("a..","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"a..">> = iolist_to_binary(join(re:split("a..","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"ab..bc">> = iolist_to_binary(join(re:split("ab..bc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"ab..bc">> = iolist_to_binary(join(re:split("ab..bc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"ab..bc">> = iolist_to_binary(join(re:split("ab..bc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"the.quick.brown.fox-">> = iolist_to_binary(join(re:split("the.quick.brown.fox-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"the.quick.brown.fox-">> = iolist_to_binary(join(re:split("the.quick.brown.fox-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"the.quick.brown.fox-">> = iolist_to_binary(join(re:split("the.quick.brown.fox-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"the.quick.brown.fox.">> = iolist_to_binary(join(re:split("the.quick.brown.fox.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"the.quick.brown.fox.">> = iolist_to_binary(join(re:split("the.quick.brown.fox.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"the.quick.brown.fox.">> = iolist_to_binary(join(re:split("the.quick.brown.fox.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"the.quick.brown.fox_">> = iolist_to_binary(join(re:split("the.quick.brown.fox_","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"the.quick.brown.fox_">> = iolist_to_binary(join(re:split("the.quick.brown.fox_","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"the.quick.brown.fox_">> = iolist_to_binary(join(re:split("the.quick.brown.fox_","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<"the.quick.brown.fox+">> = iolist_to_binary(join(re:split("the.quick.brown.fox+","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))), +?line <<"the.quick.brown.fox+">> = iolist_to_binary(join(re:split("the.quick.brown.fox+","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts, + 2}]))), +?line <<"the.quick.brown.fox+">> = iolist_to_binary(join(re:split("the.quick.brown.fox+","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))), +?line <<":abcd">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*)(?<=(abcd|wxyz))",[trim]))), +?line <<":abcd:">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*)(?<=(abcd|wxyz))",[{parts, + 2}]))), +?line <<":abcd:">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*)(?<=(abcd|wxyz))",[]))), +?line <<":wxyz">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*)(?<=(abcd|wxyz))",[trim]))), +?line <<":wxyz:">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*)(?<=(abcd|wxyz))",[{parts, + 2}]))), +?line <<":wxyz:">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*)(?<=(abcd|wxyz))",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>.*)(?<=(abcd|wxyz))",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>.*)(?<=(abcd|wxyz))",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>.*)(?<=(abcd|wxyz))",[]))), +?line <<"a rather long string that doesn't end with one of them">> = iolist_to_binary(join(re:split("a rather long string that doesn't end with one of them","(?>.*)(?<=(abcd|wxyz))",[trim]))), +?line <<"a rather long string that doesn't end with one of them">> = iolist_to_binary(join(re:split("a rather long string that doesn't end with one of them","(?>.*)(?<=(abcd|wxyz))",[{parts, + 2}]))), +?line <<"a rather long string that doesn't end with one of them">> = iolist_to_binary(join(re:split("a rather long string that doesn't end with one of them","(?>.*)(?<=(abcd|wxyz))",[]))), +?line <<"">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark otherword","word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark otherword","word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark otherword","word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword",[]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark","word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword",[trim]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark","word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword",[{parts, + 2}]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark","word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword",[]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope","word (?>[a-zA-Z0-9]+ ){0,30}otherword",[trim]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope","word (?>[a-zA-Z0-9]+ ){0,30}otherword",[{parts, + 2}]))), +?line <<"word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope">> = iolist_to_binary(join(re:split("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope","word (?>[a-zA-Z0-9]+ ){0,30}otherword",[]))), +?line <<"999">> = iolist_to_binary(join(re:split("999foo","(?<=\\d{3}(?!999))foo",[trim]))), +?line <<"999:">> = iolist_to_binary(join(re:split("999foo","(?<=\\d{3}(?!999))foo",[{parts, + 2}]))), +?line <<"999:">> = iolist_to_binary(join(re:split("999foo","(?<=\\d{3}(?!999))foo",[]))), +?line <<"123999">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999))foo",[trim]))), +?line <<"123999:">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999))foo",[{parts, + 2}]))), +?line <<"123999:">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999))foo",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999))foo",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999))foo",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999))foo",[]))), +?line <<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999))foo",[trim]))), +?line <<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999))foo",[{parts, + 2}]))), +?line <<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999))foo",[]))), +?line <<"999">> = iolist_to_binary(join(re:split("999foo","(?<=(?!...999)\\d{3})foo",[trim]))), +?line <<"999:">> = iolist_to_binary(join(re:split("999foo","(?<=(?!...999)\\d{3})foo",[{parts, + 2}]))), +?line <<"999:">> = iolist_to_binary(join(re:split("999foo","(?<=(?!...999)\\d{3})foo",[]))), +?line <<"123999">> = iolist_to_binary(join(re:split("123999foo","(?<=(?!...999)\\d{3})foo",[trim]))), +?line <<"123999:">> = iolist_to_binary(join(re:split("123999foo","(?<=(?!...999)\\d{3})foo",[{parts, + 2}]))), +?line <<"123999:">> = iolist_to_binary(join(re:split("123999foo","(?<=(?!...999)\\d{3})foo",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(?!...999)\\d{3})foo",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(?!...999)\\d{3})foo",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(?!...999)\\d{3})foo",[]))), +?line <<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=(?!...999)\\d{3})foo",[trim]))), +?line <<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=(?!...999)\\d{3})foo",[{parts, + 2}]))), +?line <<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=(?!...999)\\d{3})foo",[]))), +?line <<"123abc">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999)...)foo",[trim]))), +?line <<"123abc:">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999)...)foo",[{parts, + 2}]))), +?line <<"123abc:">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999)...)foo",[]))), +?line <<"123456">> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}(?!999)...)foo",[trim]))), +?line <<"123456:">> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}(?!999)...)foo",[{parts, + 2}]))), +?line <<"123456:">> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}(?!999)...)foo",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999)...)foo",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999)...)foo",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999)...)foo",[]))), +?line <<"123999foo">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999)...)foo",[trim]))), +?line <<"123999foo">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999)...)foo",[{parts, + 2}]))), +?line <<"123999foo">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999)...)foo",[]))), +?line <<"123abc">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}...)(?> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("> = iolist_to_binary(join(re:split("\\s*)=(?>\\s*) # find > = iolist_to_binary(join(re:split("\\s*)=(?>\\s*) # find > = iolist_to_binary(join(re:split("\\s*)=(?>\\s*) # find > = iolist_to_binary(join(re:split("\\s*)=(?>\\s*) # find > = iolist_to_binary(join(re:split("\\s*)=(?>\\s*) # find > = iolist_to_binary(join(re:split("\\s*)=(?>\\s*) # find > = iolist_to_binary(join(re:split("\\s*)=(?>\\s*) # find > = iolist_to_binary(join(re:split("\\s*)=(?>\\s*) # find > = iolist_to_binary(join(re:split("\\s*)=(?>\\s*) # find > = iolist_to_binary(join(re:split("ZABCDEFG","((Z)+|A)*",[trim]))), +?line <<":A:Z:BCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","((Z)+|A)*",[{parts, + 2}]))), +?line <<":A:Z:B:::C:::D:::E:::F:::G:::">> = iolist_to_binary(join(re:split("ZABCDEFG","((Z)+|A)*",[]))), +?line <<":A::B:::C:::D:::E:::F:::G">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z()|A)*",[trim]))), +?line <<":A::BCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z()|A)*",[{parts, + 2}]))), +?line <<":A::B:::C:::D:::E:::F:::G:::">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z()|A)*",[]))), +?line <<":A:::B::::C::::D::::E::::F::::G">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z(())|A)*",[trim]))), +?line <<":A:::BCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z(())|A)*",[{parts, + 2}]))), +?line <<":A:::B::::C::::D::::E::::F::::G::::">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z(())|A)*",[]))), +?line <<":A:B::C::D::E::F::G">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>Z)+|A)*",[trim]))), +?line <<":A:BCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>Z)+|A)*",[{parts, + 2}]))), +?line <<":A:B::C::D::E::F::G::">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>Z)+|A)*",[]))), +?line <<"Z::::B::C::D::E::F::G">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>)+|A)*",[trim]))), +?line <<"Z::ABCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>)+|A)*",[{parts, + 2}]))), +?line <<"Z::::B::C::D::E::F::G::">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>)+|A)*",[]))), +?line <<":b:b:b">> = iolist_to_binary(join(re:split("abbab","a*",[trim]))), +?line <<":bbab">> = iolist_to_binary(join(re:split("abbab","a*",[{parts, + 2}]))), +?line <<":b:b:b:">> = iolist_to_binary(join(re:split("abbab","a*",[]))), +?line <<":bcde">> = iolist_to_binary(join(re:split("abcde","^[a-\\d]",[trim]))), +?line <<":bcde">> = iolist_to_binary(join(re:split("abcde","^[a-\\d]",[{parts, + 2}]))), +?line <<":bcde">> = iolist_to_binary(join(re:split("abcde","^[a-\\d]",[]))), +?line <<":things">> = iolist_to_binary(join(re:split("-things","^[a-\\d]",[trim]))), +?line <<":things">> = iolist_to_binary(join(re:split("-things","^[a-\\d]",[{parts, + 2}]))), +?line <<":things">> = iolist_to_binary(join(re:split("-things","^[a-\\d]",[]))), +?line <<":digit">> = iolist_to_binary(join(re:split("0digit","^[a-\\d]",[trim]))), +?line <<":digit">> = iolist_to_binary(join(re:split("0digit","^[a-\\d]",[{parts, + 2}]))), +?line <<":digit">> = iolist_to_binary(join(re:split("0digit","^[a-\\d]",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-\\d]",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-\\d]",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-\\d]",[]))), +?line <<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[a-\\d]",[trim]))), +?line <<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[a-\\d]",[{parts, + 2}]))), +?line <<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[a-\\d]",[]))), +?line <<":bcde">> = iolist_to_binary(join(re:split("abcde","^[\\d-a]",[trim]))), +?line <<":bcde">> = iolist_to_binary(join(re:split("abcde","^[\\d-a]",[{parts, + 2}]))), +?line <<":bcde">> = iolist_to_binary(join(re:split("abcde","^[\\d-a]",[]))), +?line <<":things">> = iolist_to_binary(join(re:split("-things","^[\\d-a]",[trim]))), +?line <<":things">> = iolist_to_binary(join(re:split("-things","^[\\d-a]",[{parts, + 2}]))), +?line <<":things">> = iolist_to_binary(join(re:split("-things","^[\\d-a]",[]))), +?line <<":digit">> = iolist_to_binary(join(re:split("0digit","^[\\d-a]",[trim]))), +?line <<":digit">> = iolist_to_binary(join(re:split("0digit","^[\\d-a]",[{parts, + 2}]))), +?line <<":digit">> = iolist_to_binary(join(re:split("0digit","^[\\d-a]",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[\\d-a]",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[\\d-a]",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[\\d-a]",[]))), +?line <<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[\\d-a]",[trim]))), +?line <<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[\\d-a]",[{parts, + 2}]))), +?line <<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[\\d-a]",[]))), +?line <<">:<">> = iolist_to_binary(join(re:split("> + <","[[:space:]]+",[trim]))), +?line <<">:<">> = iolist_to_binary(join(re:split("> + <","[[:space:]]+",[{parts,2}]))), +?line <<">:<">> = iolist_to_binary(join(re:split("> + <","[[:space:]]+",[]))), +?line <<">: + <">> = iolist_to_binary(join(re:split("> + <","[[:blank:]]+",[trim]))), +?line <<">: + <">> = iolist_to_binary(join(re:split("> + <","[[:blank:]]+",[{parts,2}]))), +?line <<">: + <">> = iolist_to_binary(join(re:split("> + <","[[:blank:]]+",[]))), +?line <<">: <">> = iolist_to_binary(join(re:split("> + <","[\\s]+",[trim]))), +?line <<">: <">> = iolist_to_binary(join(re:split("> + <","[\\s]+",[{parts,2}]))), +?line <<">: <">> = iolist_to_binary(join(re:split("> + <","[\\s]+",[]))), +?line <<">: <">> = iolist_to_binary(join(re:split("> + <","\\s+",[trim]))), +?line <<">: <">> = iolist_to_binary(join(re:split("> + <","\\s+",[{parts,2}]))), +?line <<">: <">> = iolist_to_binary(join(re:split("> + <","\\s+",[]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","a b",[extended, + trim]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","a b",[extended, + {parts, + 2}]))), +?line <<"ab">> = iolist_to_binary(join(re:split("ab","a b",[extended]))), +?line <<"a +:b">> = iolist_to_binary(join(re:split("a +xb","(?!\\A)x",[multiline,trim]))), +?line <<"a +:b">> = iolist_to_binary(join(re:split("a +xb","(?!\\A)x",[multiline,{parts,2}]))), +?line <<"a +:b">> = iolist_to_binary(join(re:split("a +xb","(?!\\A)x",[multiline]))), +?line <<"a +xb">> = iolist_to_binary(join(re:split("a +xb","(?!^)x",[multiline,trim]))), +?line <<"a +xb">> = iolist_to_binary(join(re:split("a +xb","(?!^)x",[multiline,{parts,2}]))), +?line <<"a +xb">> = iolist_to_binary(join(re:split("a +xb","(?!^)x",[multiline]))), +?line <<"">> = iolist_to_binary(join(re:split("abcabcabc","abc\\Qabc\\Eabc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abcabcabc","abc\\Qabc\\Eabc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abcabcabc","abc\\Qabc\\Eabc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc(*+|abc","abc\\Q(*+|\\Eabc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc(*+|abc","abc\\Q(*+|\\Eabc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc(*+|abc","abc\\Q(*+|\\Eabc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc abcabc"," abc\\Q abc\\Eabc",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc abcabc"," abc\\Q abc\\Eabc",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc abcabc"," abc\\Q abc\\Eabc",[extended]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," abc\\Q abc\\Eabc",[extended, + trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," abc\\Q abc\\Eabc",[extended, + {parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," abc\\Q abc\\Eabc",[extended]))), +?line <<"abcabcabc">> = iolist_to_binary(join(re:split("abcabcabc"," abc\\Q abc\\Eabc",[extended, + trim]))), +?line <<"abcabcabc">> = iolist_to_binary(join(re:split("abcabcabc"," abc\\Q abc\\Eabc",[extended, + {parts, + 2}]))), +?line <<"abcabcabc">> = iolist_to_binary(join(re:split("abcabcabc"," abc\\Q abc\\Eabc",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal\\E",[extended,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal\\E",[extended,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal\\E",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal",[extended,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal",[extended,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal\\E #more comment + ",[extended,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal\\E #more comment + ",[extended,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal\\E #more comment + ",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal\\E #more comment",[extended,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal\\E #more comment",[extended,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc#not comment + literal","abc#comment + \\Q#not comment + literal\\E #more comment",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("abc\\$xyz","\\Qabc\\$xyz\\E",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc\\$xyz","\\Qabc\\$xyz\\E",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc\\$xyz","\\Qabc\\$xyz\\E",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc$xyz","\\Qabc\\E\\$\\Qxyz\\E",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc$xyz","\\Qabc\\E\\$\\Qxyz\\E",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc$xyz","\\Qabc\\E\\$\\Qxyz\\E",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","\\Aabc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","\\Aabc",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc",[]))), +?line <<"xyzabc">> = iolist_to_binary(join(re:split("xyzabc","\\Aabc",[trim]))), +?line <<"xyzabc">> = iolist_to_binary(join(re:split("xyzabc","\\Aabc",[{parts, + 2}]))), +?line <<"xyzabc">> = iolist_to_binary(join(re:split("xyzabc","\\Aabc",[]))), +?line <<":abc2xyzabc3">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","\\Aabc.",[trim]))), +?line <<":abc2xyzabc3">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","\\Aabc.",[{parts, + 2}]))), +?line <<":abc2xyzabc3">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","\\Aabc.",[]))), +?line <<"::xyz">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","abc.",[trim]))), +?line <<":abc2xyzabc3">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","abc.",[{parts, + 2}]))), +?line <<"::xyz:">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","abc.",[]))), +?line <<"X:Y">> = iolist_to_binary(join(re:split("XabcdY","a(?x: b c )d",[trim]))), +?line <<"X:Y">> = iolist_to_binary(join(re:split("XabcdY","a(?x: b c )d",[{parts, + 2}]))), +?line <<"X:Y">> = iolist_to_binary(join(re:split("XabcdY","a(?x: b c )d",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?x: b c )d",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?x: b c )d",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?x: b c )d",[]))), +?line <<"Xa b c d Y">> = iolist_to_binary(join(re:split("Xa b c d Y","a(?x: b c )d",[trim]))), +?line <<"Xa b c d Y">> = iolist_to_binary(join(re:split("Xa b c d Y","a(?x: b c )d",[{parts, + 2}]))), +?line <<"Xa b c d Y">> = iolist_to_binary(join(re:split("Xa b c d Y","a(?x: b c )d",[]))), +?line <<"X:abc:Y">> = iolist_to_binary(join(re:split("XabcY","((?x)x y z | a b c)",[trim]))), +?line <<"X:abc:Y">> = iolist_to_binary(join(re:split("XabcY","((?x)x y z | a b c)",[{parts, + 2}]))), +?line <<"X:abc:Y">> = iolist_to_binary(join(re:split("XabcY","((?x)x y z | a b c)",[]))), +?line <<"A:xyz:B">> = iolist_to_binary(join(re:split("AxyzB","((?x)x y z | a b c)",[trim]))), +?line <<"A:xyz:B">> = iolist_to_binary(join(re:split("AxyzB","((?x)x y z | a b c)",[{parts, + 2}]))), +?line <<"A:xyz:B">> = iolist_to_binary(join(re:split("AxyzB","((?x)x y z | a b c)",[]))), +?line <<"X:Y">> = iolist_to_binary(join(re:split("XabCY","(?i)AB(?-i)C",[trim]))), +?line <<"X:Y">> = iolist_to_binary(join(re:split("XabCY","(?i)AB(?-i)C",[{parts, + 2}]))), +?line <<"X:Y">> = iolist_to_binary(join(re:split("XabCY","(?i)AB(?-i)C",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i)AB(?-i)C",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i)AB(?-i)C",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i)AB(?-i)C",[]))), +?line <<"XabcY">> = iolist_to_binary(join(re:split("XabcY","(?i)AB(?-i)C",[trim]))), +?line <<"XabcY">> = iolist_to_binary(join(re:split("XabcY","(?i)AB(?-i)C",[{parts, + 2}]))), +?line <<"XabcY">> = iolist_to_binary(join(re:split("XabcY","(?i)AB(?-i)C",[]))), +?line <<":abC">> = iolist_to_binary(join(re:split("abCE","((?i)AB(?-i)C|D)E",[trim]))), +?line <<":abC:">> = iolist_to_binary(join(re:split("abCE","((?i)AB(?-i)C|D)E",[{parts, + 2}]))), +?line <<":abC:">> = iolist_to_binary(join(re:split("abCE","((?i)AB(?-i)C|D)E",[]))), +?line <<":D">> = iolist_to_binary(join(re:split("DE","((?i)AB(?-i)C|D)E",[trim]))), +?line <<":D:">> = iolist_to_binary(join(re:split("DE","((?i)AB(?-i)C|D)E",[{parts, + 2}]))), +?line <<":D:">> = iolist_to_binary(join(re:split("DE","((?i)AB(?-i)C|D)E",[]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)AB(?-i)C|D)E",[trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)AB(?-i)C|D)E",[{parts, + 2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)AB(?-i)C|D)E",[]))), +?line <<"abcE">> = iolist_to_binary(join(re:split("abcE","((?i)AB(?-i)C|D)E",[trim]))), +?line <<"abcE">> = iolist_to_binary(join(re:split("abcE","((?i)AB(?-i)C|D)E",[{parts, + 2}]))), +?line <<"abcE">> = iolist_to_binary(join(re:split("abcE","((?i)AB(?-i)C|D)E",[]))), +?line <<"abCe">> = iolist_to_binary(join(re:split("abCe","((?i)AB(?-i)C|D)E",[trim]))), +?line <<"abCe">> = iolist_to_binary(join(re:split("abCe","((?i)AB(?-i)C|D)E",[{parts, + 2}]))), +?line <<"abCe">> = iolist_to_binary(join(re:split("abCe","((?i)AB(?-i)C|D)E",[]))), +?line <<"dE">> = iolist_to_binary(join(re:split("dE","((?i)AB(?-i)C|D)E",[trim]))), +?line <<"dE">> = iolist_to_binary(join(re:split("dE","((?i)AB(?-i)C|D)E",[{parts, + 2}]))), +?line <<"dE">> = iolist_to_binary(join(re:split("dE","((?i)AB(?-i)C|D)E",[]))), +?line <<"De">> = iolist_to_binary(join(re:split("De","((?i)AB(?-i)C|D)E",[trim]))), +?line <<"De">> = iolist_to_binary(join(re:split("De","((?i)AB(?-i)C|D)E",[{parts, + 2}]))), +?line <<"De">> = iolist_to_binary(join(re:split("De","((?i)AB(?-i)C|D)E",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[{parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[]))), +?line <<"a:bc">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[trim]))), +?line <<"a:bc:">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[{parts, + 2}]))), +?line <<"a:bc:">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[]))), +?line <<":abc">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[dotall, + trim]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[dotall, + {parts, + 2}]))), +?line <<":abc:">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[dotall]))), +?line <<"a:bc">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[dotall, + trim]))), +?line <<"a:bc:">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[dotall, + {parts, + 2}]))), +?line <<"a:bc:">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[dotall]))), +?line <<":abc:abc">> = iolist_to_binary(join(re:split("abc123abc","((.*))\\d+\\1",[trim]))), +?line <<":abc:abc:">> = iolist_to_binary(join(re:split("abc123abc","((.*))\\d+\\1",[{parts, + 2}]))), +?line <<":abc:abc:">> = iolist_to_binary(join(re:split("abc123abc","((.*))\\d+\\1",[]))), +?line <<"a:bc:bc">> = iolist_to_binary(join(re:split("abc123bc","((.*))\\d+\\1",[trim]))), +?line <<"a:bc:bc:">> = iolist_to_binary(join(re:split("abc123bc","((.*))\\d+\\1",[{parts, + 2}]))), +?line <<"a:bc:bc:">> = iolist_to_binary(join(re:split("abc123bc","((.*))\\d+\\1",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a123::a123","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123::a123","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123::a123","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("a123:b342::abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:b342::abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:b342::abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("a123:b342::324e:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:b342::324e:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:b342::324e:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("a123:ddde:b342::324e:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:ddde:b342::324e:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:ddde:b342::324e:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("a123:ddde:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:ddde:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:ddde:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("a123:ddde:9999:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:ddde:9999:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("a123:ddde:9999:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"1:2:3:4:5:6:7:8">> = iolist_to_binary(join(re:split("1:2:3:4:5:6:7:8","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"1:2:3:4:5:6:7:8">> = iolist_to_binary(join(re:split("1:2:3:4:5:6:7:8","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"1:2:3:4:5:6:7:8">> = iolist_to_binary(join(re:split("1:2:3:4:5:6:7:8","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"a123:bce:ddde:9999:b342::324e:dcba:abcd">> = iolist_to_binary(join(re:split("a123:bce:ddde:9999:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"a123:bce:ddde:9999:b342::324e:dcba:abcd">> = iolist_to_binary(join(re:split("a123:bce:ddde:9999:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"a123:bce:ddde:9999:b342::324e:dcba:abcd">> = iolist_to_binary(join(re:split("a123:bce:ddde:9999:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"a123::9999:b342::324e:dcba:abcd">> = iolist_to_binary(join(re:split("a123::9999:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"a123::9999:b342::324e:dcba:abcd">> = iolist_to_binary(join(re:split("a123::9999:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"a123::9999:b342::324e:dcba:abcd">> = iolist_to_binary(join(re:split("a123::9999:b342::324e:dcba:abcd","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"abcde:2:3:4:5:6:7:8">> = iolist_to_binary(join(re:split("abcde:2:3:4:5:6:7:8","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"abcde:2:3:4:5:6:7:8">> = iolist_to_binary(join(re:split("abcde:2:3:4:5:6:7:8","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"abcde:2:3:4:5:6:7:8">> = iolist_to_binary(join(re:split("abcde:2:3:4:5:6:7:8","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"::1">> = iolist_to_binary(join(re:split("::1","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"::1">> = iolist_to_binary(join(re:split("::1","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"::1">> = iolist_to_binary(join(re:split("::1","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"abcd:fee0:123::">> = iolist_to_binary(join(re:split("abcd:fee0:123::","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"abcd:fee0:123::">> = iolist_to_binary(join(re:split("abcd:fee0:123::","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"abcd:fee0:123::">> = iolist_to_binary(join(re:split("abcd:fee0:123::","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<":1">> = iolist_to_binary(join(re:split(":1","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<":1">> = iolist_to_binary(join(re:split(":1","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<":1">> = iolist_to_binary(join(re:split(":1","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"1:">> = iolist_to_binary(join(re:split("1:","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,trim]))), +?line <<"1:">> = iolist_to_binary(join(re:split("1:","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless,{parts,2}]))), +?line <<"1:">> = iolist_to_binary(join(re:split("1:","^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + ",[extended,caseless]))), +?line <<"">> = iolist_to_binary(join(re:split("z","[z\\Qa-d]\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("z","[z\\Qa-d]\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("z","[z\\Qa-d]\\E]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","[z\\Qa-d]\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","[z\\Qa-d]\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","[z\\Qa-d]\\E]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","[z\\Qa-d]\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[z\\Qa-d]\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","[z\\Qa-d]\\E]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("d","[z\\Qa-d]\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("d","[z\\Qa-d]\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("d","[z\\Qa-d]\\E]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("]","[z\\Qa-d]\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("]","[z\\Qa-d]\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("]","[z\\Qa-d]\\E]",[]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[z\\Qa-d]\\E]",[trim]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[z\\Qa-d]\\E]",[{parts, + 2}]))), +?line <<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[z\\Qa-d]\\E]",[]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[z\\Qa-d]\\E]",[trim]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[z\\Qa-d]\\E]",[{parts, + 2}]))), +?line <<"b">> = iolist_to_binary(join(re:split("b","[z\\Qa-d]\\E]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("z","[\\z\\C]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("z","[\\z\\C]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("z","[\\z\\C]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("C","[\\z\\C]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("C","[\\z\\C]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("C","[\\z\\C]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("M","\\M",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("M","\\M",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("M","\\M",[]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a+)*b",[trim]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a+)*b",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a+)*b",[]))), +?line <<"">> = iolist_to_binary(join(re:split("REGular","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("REGular","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("REGular","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("regulaer","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("regulaer","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("regulaer","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Regex","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("Regex","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("Regex","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("regulär","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("regulär","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("regulär","(?i)reg(?:ul(?:[aä]|ae)r|ex)",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Åæåäà","Åæåä[à-ÿÀ-ß]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("Åæåäà","Åæåä[à-ÿÀ-ß]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("Åæåäà","Åæåä[à-ÿÀ-ß]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Åæåäÿ","Åæåä[à-ÿÀ-ß]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("Åæåäÿ","Åæåä[à-ÿÀ-ß]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("Åæåäÿ","Åæåä[à-ÿÀ-ß]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ÅæåäÀ","Åæåä[à-ÿÀ-ß]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ÅæåäÀ","Åæåä[à-ÿÀ-ß]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ÅæåäÀ","Åæåä[à-ÿÀ-ß]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("Åæåäß","Åæåä[à-ÿÀ-ß]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("Åæåäß","Åæåä[à-ÿÀ-ß]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("Åæåäß","Åæåä[à-ÿÀ-ß]+",[]))), +?line <<"„XAZ">> = iolist_to_binary(join(re:split("„XAZXB","(?<=Z)X.",[trim]))), +?line <<"„XAZ:">> = iolist_to_binary(join(re:split("„XAZXB","(?<=Z)X.",[{parts, + 2}]))), +?line <<"„XAZ:">> = iolist_to_binary(join(re:split("„XAZXB","(?<=Z)X.",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab cd defg","ab cd (?x) de fg",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab cd defg","ab cd (?x) de fg",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab cd defg","ab cd (?x) de fg",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ab cddefg","ab cd(?x) de fg",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("ab cddefg","ab cd(?x) de fg",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("ab cddefg","ab cd(?x) de fg",[]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","ab cd(?x) de fg",[trim]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","ab cd(?x) de fg",[{parts, + 2}]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","ab cd(?x) de fg",[]))), +?line <<"abcddefg">> = iolist_to_binary(join(re:split("abcddefg","ab cd(?x) de fg",[trim]))), +?line <<"abcddefg">> = iolist_to_binary(join(re:split("abcddefg","ab cd(?x) de fg",[{parts, + 2}]))), +?line <<"abcddefg">> = iolist_to_binary(join(re:split("abcddefg","ab cd(?x) de fg",[]))), +?line <<"foo:bar:X">> = iolist_to_binary(join(re:split("foobarX","(?> = iolist_to_binary(join(re:split("foobarX","(?> = iolist_to_binary(join(re:split("foobarX","(?> = iolist_to_binary(join(re:split("** Failers","(?> = iolist_to_binary(join(re:split("** Failers","(?> = iolist_to_binary(join(re:split("** Failers","(?> = iolist_to_binary(join(re:split("boobarX","(?> = iolist_to_binary(join(re:split("boobarX","(?> = iolist_to_binary(join(re:split("boobarX","(?> = iolist_to_binary(join(re:split("offX","(?> = iolist_to_binary(join(re:split("offX","(?> = iolist_to_binary(join(re:split("offX","(?> = iolist_to_binary(join(re:split("** Failers","(?> = iolist_to_binary(join(re:split("** Failers","(?> = iolist_to_binary(join(re:split("** Failers","(?> = iolist_to_binary(join(re:split("onyX","(?> = iolist_to_binary(join(re:split("onyX","(?> = iolist_to_binary(join(re:split("onyX","(?> = iolist_to_binary(join(re:split("onyX","(?<=[^f])X",[trim]))), +?line <<"ony:">> = iolist_to_binary(join(re:split("onyX","(?<=[^f])X",[{parts, + 2}]))), +?line <<"ony:">> = iolist_to_binary(join(re:split("onyX","(?<=[^f])X",[]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^f])X",[trim]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^f])X",[{parts, + 2}]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^f])X",[]))), +?line <<"offX">> = iolist_to_binary(join(re:split("offX","(?<=[^f])X",[trim]))), +?line <<"offX">> = iolist_to_binary(join(re:split("offX","(?<=[^f])X",[{parts, + 2}]))), +?line <<"offX">> = iolist_to_binary(join(re:split("offX","(?<=[^f])X",[]))), +?line <<"a +:b +:c">> = iolist_to_binary(join(re:split("a +b +c","^",[multiline,trim]))), +?line <<"a +:b +c">> = iolist_to_binary(join(re:split("a +b +c","^",[multiline,{parts,2}]))), +?line <<"a +:b +:c">> = iolist_to_binary(join(re:split("a +b +c","^",[multiline]))), +?line <<"">> = iolist_to_binary(join(re:split("","^",[multiline, + trim]))), +?line <<"">> = iolist_to_binary(join(re:split("","^",[multiline, + {parts, + 2}]))), +?line <<"">> = iolist_to_binary(join(re:split("","^",[multiline]))), +?line <<"A +C +:C">> = iolist_to_binary(join(re:split("A +C +C","(?<=C\\n)^",[multiline,trim]))), +?line <<"A +C +:C">> = iolist_to_binary(join(re:split("A +C +C","(?<=C\\n)^",[multiline,{parts,2}]))), +?line <<"A +C +:C">> = iolist_to_binary(join(re:split("A +C +C","(?<=C\\n)^",[multiline]))), +?line <<":X">> = iolist_to_binary(join(re:split("bXaX","(?:(?(1)a|b)(X))+",[trim]))), +?line <<":X:">> = iolist_to_binary(join(re:split("bXaX","(?:(?(1)a|b)(X))+",[{parts, + 2}]))), +?line <<":X:">> = iolist_to_binary(join(re:split("bXaX","(?:(?(1)a|b)(X))+",[]))), +?line <<":Y">> = iolist_to_binary(join(re:split("bXXaYYaY","(?:(?(1)\\1a|b)(X|Y))+",[trim]))), +?line <<":Y:">> = iolist_to_binary(join(re:split("bXXaYYaY","(?:(?(1)\\1a|b)(X|Y))+",[{parts, + 2}]))), +?line <<":Y:">> = iolist_to_binary(join(re:split("bXXaYYaY","(?:(?(1)\\1a|b)(X|Y))+",[]))), +?line <<":X:YaXXaX">> = iolist_to_binary(join(re:split("bXYaXXaX","(?:(?(1)\\1a|b)(X|Y))+",[trim]))), +?line <<":X:YaXXaX">> = iolist_to_binary(join(re:split("bXYaXXaX","(?:(?(1)\\1a|b)(X|Y))+",[{parts, + 2}]))), +?line <<":X:YaXXaX">> = iolist_to_binary(join(re:split("bXYaXXaX","(?:(?(1)\\1a|b)(X|Y))+",[]))), +?line <<"::::::::::X:XaYYaY">> = iolist_to_binary(join(re:split("bXXaYYaY","()()()()()()()()()(?:(?(10)\\10a|b)(X|Y))+",[trim]))), +?line <<"::::::::::X:XaYYaY">> = iolist_to_binary(join(re:split("bXXaYYaY","()()()()()()()()()(?:(?(10)\\10a|b)(X|Y))+",[{parts, + 2}]))), +?line <<"::::::::::X:XaYYaY">> = iolist_to_binary(join(re:split("bXXaYYaY","()()()()()()()()()(?:(?(10)\\10a|b)(X|Y))+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc]","[[,abc,]+]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc]","[[,abc,]+]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc]","[[,abc,]+]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a,b]","[[,abc,]+]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a,b]","[[,abc,]+]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a,b]","[[,abc,]+]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("[a,b,c]","[[,abc,]+]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("[a,b,c]","[[,abc,]+]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("[a,b,c]","[[,abc,]+]",[]))), +?line <<"A:B">> = iolist_to_binary(join(re:split("A B","(?-x: )",[extended, + trim]))), +?line <<"A:B">> = iolist_to_binary(join(re:split("A B","(?-x: )",[extended, + {parts, + 2}]))), +?line <<"A:B">> = iolist_to_binary(join(re:split("A B","(?-x: )",[extended]))), +?line <<"A:B">> = iolist_to_binary(join(re:split("A # B","(?x)(?-x: \\s*#\\s*)",[trim]))), +?line <<"A:B">> = iolist_to_binary(join(re:split("A # B","(?x)(?-x: \\s*#\\s*)",[{parts, + 2}]))), +?line <<"A:B">> = iolist_to_binary(join(re:split("A # B","(?x)(?-x: \\s*#\\s*)",[]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x)(?-x: \\s*#\\s*)",[trim]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x)(?-x: \\s*#\\s*)",[{parts, + 2}]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x)(?-x: \\s*#\\s*)",[]))), +?line <<"#">> = iolist_to_binary(join(re:split("#","(?x)(?-x: \\s*#\\s*)",[trim]))), +?line <<"#">> = iolist_to_binary(join(re:split("#","(?x)(?-x: \\s*#\\s*)",[{parts, + 2}]))), +?line <<"#">> = iolist_to_binary(join(re:split("#","(?x)(?-x: \\s*#\\s*)",[]))), +?line <<"A">> = iolist_to_binary(join(re:split("A #include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[trim]))), +?line <<"A:">> = iolist_to_binary(join(re:split("A #include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[{parts, + 2}]))), +?line <<"A:">> = iolist_to_binary(join(re:split("A #include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[trim]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[{parts, + 2}]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[]))), +?line <<"A#include">> = iolist_to_binary(join(re:split("A#include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[trim]))), +?line <<"A#include">> = iolist_to_binary(join(re:split("A#include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[{parts, + 2}]))), +?line <<"A#include">> = iolist_to_binary(join(re:split("A#include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[]))), +?line <<"A #Include">> = iolist_to_binary(join(re:split("A #Include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[trim]))), +?line <<"A #Include">> = iolist_to_binary(join(re:split("A #Include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[{parts, + 2}]))), +?line <<"A #Include">> = iolist_to_binary(join(re:split("A #Include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabbbb","a*b*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","a*b*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","a*b*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","a*b*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","a*b*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabbbb","a*b?\\w",[trim]))), +?line <<":bb">> = iolist_to_binary(join(re:split("aaabbbb","a*b?\\w",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("aaabbbb","a*b?\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","a*b?\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","a*b?\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","a*b?\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","a*b?\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b?\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b?\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,4}\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,4}\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,4}\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","a*b{0,4}\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","a*b{0,4}\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","a*b{0,4}\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","a*b{0,4}\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b{0,4}\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b{0,4}\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,}\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,}\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,}\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","a*b{0,}\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","a*b{0,}\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","a*b{0,}\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","a*b{0,}\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b{0,}\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b{0,}\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("0a","a*\\d*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("0a","a*\\d*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("0a","a*\\d*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","a*\\d*\\w",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*\\d*\\w",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*\\d*\\w",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","a*b *\\w",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b *\\w",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b *\\w",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("a","a*b#comment + *\\w",[extended,trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b#comment + *\\w",[extended,{parts,2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a*b#comment + *\\w",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("a","a* b *\\w",[extended, + trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a* b *\\w",[extended, + {parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","a* b *\\w",[extended]))), +?line <<":: +pqr">> = iolist_to_binary(join(re:split("abc=xyz\\ +pqr","^\\w+=.*(\\\\\\n.*)*",[trim]))), +?line <<":: +pqr">> = iolist_to_binary(join(re:split("abc=xyz\\ +pqr","^\\w+=.*(\\\\\\n.*)*",[{parts,2}]))), +?line <<":: +pqr">> = iolist_to_binary(join(re:split("abc=xyz\\ +pqr","^\\w+=.*(\\\\\\n.*)*",[]))), +?line <<":abcd">> = iolist_to_binary(join(re:split("abcd:","(?=(\\w+))\\1:",[trim]))), +?line <<":abcd:">> = iolist_to_binary(join(re:split("abcd:","(?=(\\w+))\\1:",[{parts, + 2}]))), +?line <<":abcd:">> = iolist_to_binary(join(re:split("abcd:","(?=(\\w+))\\1:",[]))), +?line <<":abcd">> = iolist_to_binary(join(re:split("abcd:","^(?=(\\w+))\\1:",[trim]))), +?line <<":abcd:">> = iolist_to_binary(join(re:split("abcd:","^(?=(\\w+))\\1:",[{parts, + 2}]))), +?line <<":abcd:">> = iolist_to_binary(join(re:split("abcd:","^(?=(\\w+))\\1:",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","^\\Eabc",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^\\Eabc",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("abc","^\\Eabc",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","^[\\Eabc]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^[\\Eabc]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^[\\Eabc]",[]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\Eabc]",[trim]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\Eabc]",[{parts, + 2}]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\Eabc]",[]))), +?line <<"E">> = iolist_to_binary(join(re:split("E","^[\\Eabc]",[trim]))), +?line <<"E">> = iolist_to_binary(join(re:split("E","^[\\Eabc]",[{parts, + 2}]))), +?line <<"E">> = iolist_to_binary(join(re:split("E","^[\\Eabc]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","^[a-\\Ec]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("b","^[a-\\Ec]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("b","^[a-\\Ec]",[]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a-\\Ec]",[trim]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a-\\Ec]",[{parts, + 2}]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a-\\Ec]",[]))), +?line <<"-">> = iolist_to_binary(join(re:split("-","^[a-\\Ec]",[trim]))), +?line <<"-">> = iolist_to_binary(join(re:split("-","^[a-\\Ec]",[{parts, + 2}]))), +?line <<"-">> = iolist_to_binary(join(re:split("-","^[a-\\Ec]",[]))), +?line <<"E">> = iolist_to_binary(join(re:split("E","^[a-\\Ec]",[trim]))), +?line <<"E">> = iolist_to_binary(join(re:split("E","^[a-\\Ec]",[{parts, + 2}]))), +?line <<"E">> = iolist_to_binary(join(re:split("E","^[a-\\Ec]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","^[a\\E\\E-\\Ec]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("b","^[a\\E\\E-\\Ec]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("b","^[a\\E\\E-\\Ec]",[]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a\\E\\E-\\Ec]",[trim]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a\\E\\E-\\Ec]",[{parts, + 2}]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a\\E\\E-\\Ec]",[]))), +?line <<"-">> = iolist_to_binary(join(re:split("-","^[a\\E\\E-\\Ec]",[trim]))), +?line <<"-">> = iolist_to_binary(join(re:split("-","^[a\\E\\E-\\Ec]",[{parts, + 2}]))), +?line <<"-">> = iolist_to_binary(join(re:split("-","^[a\\E\\E-\\Ec]",[]))), +?line <<"E">> = iolist_to_binary(join(re:split("E","^[a\\E\\E-\\Ec]",[trim]))), +?line <<"E">> = iolist_to_binary(join(re:split("E","^[a\\E\\E-\\Ec]",[{parts, + 2}]))), +?line <<"E">> = iolist_to_binary(join(re:split("E","^[a\\E\\E-\\Ec]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("b","^[\\E\\Qa\\E-\\Qz\\E]+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("b","^[\\E\\Qa\\E-\\Qz\\E]+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("b","^[\\E\\Qa\\E-\\Qz\\E]+",[]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\E\\Qa\\E-\\Qz\\E]+",[trim]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\E\\Qa\\E-\\Qz\\E]+",[{parts, + 2}]))), +?line <<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\E\\Qa\\E-\\Qz\\E]+",[]))), +?line <<"-">> = iolist_to_binary(join(re:split("-","^[\\E\\Qa\\E-\\Qz\\E]+",[trim]))), +?line <<"-">> = iolist_to_binary(join(re:split("-","^[\\E\\Qa\\E-\\Qz\\E]+",[{parts, + 2}]))), +?line <<"-">> = iolist_to_binary(join(re:split("-","^[\\E\\Qa\\E-\\Qz\\E]+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","^[a\\Q]bc\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^[a\\Q]bc\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^[a\\Q]bc\\E]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("]","^[a\\Q]bc\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("]","^[a\\Q]bc\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("]","^[a\\Q]bc\\E]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("c","^[a\\Q]bc\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("c","^[a\\Q]bc\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("c","^[a\\Q]bc\\E]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","^[a-\\Q\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^[a-\\Q\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","^[a-\\Q\\E]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("-","^[a-\\Q\\E]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("-","^[a-\\Q\\E]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("-","^[a-\\Q\\E]",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaa","^(a()*)*",[trim]))), +?line <<":a::">> = iolist_to_binary(join(re:split("aaaa","^(a()*)*",[{parts, + 2}]))), +?line <<":a::">> = iolist_to_binary(join(re:split("aaaa","^(a()*)*",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))*)*",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))*)*",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))*)*",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("aaaa","^(a()+)+",[trim]))), +?line <<":a::">> = iolist_to_binary(join(re:split("aaaa","^(a()+)+",[{parts, + 2}]))), +?line <<":a::">> = iolist_to_binary(join(re:split("aaaa","^(a()+)+",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))+)+",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))+)+",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))+)+",[]))), +?line <<":a">> = iolist_to_binary(join(re:split("abbD","(a){0,3}(?(1)b|(c|))*D",[trim]))), +?line <<":a::">> = iolist_to_binary(join(re:split("abbD","(a){0,3}(?(1)b|(c|))*D",[{parts, + 2}]))), +?line <<":a::">> = iolist_to_binary(join(re:split("abbD","(a){0,3}(?(1)b|(c|))*D",[]))), +?line <<"">> = iolist_to_binary(join(re:split("ccccD","(a){0,3}(?(1)b|(c|))*D",[trim]))), +?line <<":::">> = iolist_to_binary(join(re:split("ccccD","(a){0,3}(?(1)b|(c|))*D",[{parts, + 2}]))), +?line <<":::">> = iolist_to_binary(join(re:split("ccccD","(a){0,3}(?(1)b|(c|))*D",[]))), +?line <<"">> = iolist_to_binary(join(re:split("D","(a){0,3}(?(1)b|(c|))*D",[trim]))), +?line <<":::">> = iolist_to_binary(join(re:split("D","(a){0,3}(?(1)b|(c|))*D",[{parts, + 2}]))), +?line <<":::">> = iolist_to_binary(join(re:split("D","(a){0,3}(?(1)b|(c|))*D",[]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a|)*\\d",[trim]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a|)*\\d",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a|)*\\d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(a|)*\\d",[trim]))), +?line <<"::">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(a|)*\\d",[{parts, + 2}]))), +?line <<"::">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(a|)*\\d",[]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?>a|)*\\d",[trim]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?>a|)*\\d",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?>a|)*\\d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?>a|)*\\d",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?>a|)*\\d",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?>a|)*\\d",[]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?:a|)*\\d",[trim]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?:a|)*\\d",[{parts, + 2}]))), +?line <<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?:a|)*\\d",[]))), +?line <<"">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?:a|)*\\d",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?:a|)*\\d",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?:a|)*\\d",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","\\Z",[trim]))), +?line <<"abc:">> = iolist_to_binary(join(re:split("abc","\\Z",[{parts, + 2}]))), +?line <<"abc:">> = iolist_to_binary(join(re:split("abc","\\Z",[]))), +?line <<"">> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[trim]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[{parts, + 2}]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[]))), +?line <<"abc">> = iolist_to_binary(join(re:split("abc","\\z(?> = iolist_to_binary(join(re:split("abc","\\z(?> = iolist_to_binary(join(re:split("abc","\\z(?> = iolist_to_binary(join(re:split("abc","\\z(?> = iolist_to_binary(join(re:split("abc","\\z(?> = iolist_to_binary(join(re:split("abc","\\z(?> = iolist_to_binary(join(re:split("abcd","(.*(.)?)*",[trim]))), +?line <<":::">> = iolist_to_binary(join(re:split("abcd","(.*(.)?)*",[{parts, + 2}]))), +?line <<":::">> = iolist_to_binary(join(re:split("abcd","(.*(.)?)*",[]))), +?line <<"a:::b:::c:::d">> = iolist_to_binary(join(re:split("abcd","( (A | (?(1)0|) )* )",[extended, + trim]))), +?line <<"a:::bcd">> = iolist_to_binary(join(re:split("abcd","( (A | (?(1)0|) )* )",[extended, + {parts, + 2}]))), +?line <<"a:::b:::c:::d:::">> = iolist_to_binary(join(re:split("abcd","( (A | (?(1)0|) )* )",[extended]))), +?line <<"a:::b:::c:::d">> = iolist_to_binary(join(re:split("abcd","( ( (?(1)0|) )* )",[extended, + trim]))), +?line <<"a:::bcd">> = iolist_to_binary(join(re:split("abcd","( ( (?(1)0|) )* )",[extended, + {parts, + 2}]))), +?line <<"a:::b:::c:::d:::">> = iolist_to_binary(join(re:split("abcd","( ( (?(1)0|) )* )",[extended]))), +?line <<"a::b::c::d">> = iolist_to_binary(join(re:split("abcd","( (?(1)0|)* )",[extended, + trim]))), +?line <<"a::bcd">> = iolist_to_binary(join(re:split("abcd","( (?(1)0|)* )",[extended, + {parts, + 2}]))), +?line <<"a::b::c::d::">> = iolist_to_binary(join(re:split("abcd","( (?(1)0|)* )",[extended]))), +?line <<"">> = iolist_to_binary(join(re:split("a]","[[:abcd:xyz]]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a]","[[:abcd:xyz]]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a]","[[:abcd:xyz]]",[]))), +?line <<"">> = iolist_to_binary(join(re:split(":]","[[:abcd:xyz]]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split(":]","[[:abcd:xyz]]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split(":]","[[:abcd:xyz]]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("a","[abc[:x\\]pqr]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("a","[abc[:x\\]pqr]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("a","[abc[:x\\]pqr]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("[","[abc[:x\\]pqr]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("[","[abc[:x\\]pqr]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("[","[abc[:x\\]pqr]",[]))), +?line <<"">> = iolist_to_binary(join(re:split(":","[abc[:x\\]pqr]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split(":","[abc[:x\\]pqr]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split(":","[abc[:x\\]pqr]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("]","[abc[:x\\]pqr]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("]","[abc[:x\\]pqr]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("]","[abc[:x\\]pqr]",[]))), +?line <<"">> = iolist_to_binary(join(re:split("p","[abc[:x\\]pqr]",[trim]))), +?line <<":">> = iolist_to_binary(join(re:split("p","[abc[:x\\]pqr]",[{parts, + 2}]))), +?line <<":">> = iolist_to_binary(join(re:split("p","[abc[:x\\]pqr]",[]))), +ok. -- cgit v1.2.3