%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 2008-2013. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%
%% %CopyrightEnd%
%%
-module(re_testoutput1_split_test).
-compile(export_all).
-compile(no_native).
%% 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() ->
run0(),
run1(),
run2(),
run3(),
run4(),
run5(),
run6(),
run7(),
run8(),
run9(),
run10(),
run11(),
run12(),
run13(),
run14(),
run15(),
run16(),
run17(),
run18(),
run19(),
run20(),
run21(),
run22(),
run23(),
run24(),
run25(),
run26(),
run27(),
run28(),
run29(),
run30(),
run31(),
run32(),
run33(),
run34(),
run35(),
run36(),
run37(),
run38(),
run39(),
run40(),
run41(),
run42(),
run43(),
run44(),
run45(),
run46(),
run47(),
run48(),
run49(),
run50(),
run51(),
run52(),
run53(),
run54(),
ok.
run0() ->
<<"">> = iolist_to_binary(join(re:split("the quick brown fox","the quick brown fox",[trim]))),
<<":">> = iolist_to_binary(join(re:split("the quick brown fox","the quick brown fox",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("the quick brown fox","the quick brown fox",[]))),
<<"The quick brown FOX">> = iolist_to_binary(join(re:split("The quick brown FOX","the quick brown fox",[trim]))),
<<"The quick brown FOX">> = iolist_to_binary(join(re:split("The quick brown FOX","the quick brown fox",[{parts,
2}]))),
<<"The quick brown FOX">> = iolist_to_binary(join(re:split("The quick brown FOX","the quick brown fox",[]))),
<<"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]))),
<<"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}]))),
<<"What do you know about :?">> = iolist_to_binary(join(re:split("What do you know about the quick brown fox?","the quick brown fox",[]))),
<<"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]))),
<<"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}]))),
<<"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",[]))),
<<"">> = iolist_to_binary(join(re:split("the quick brown fox","The quick brown fox",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("the quick brown fox","The quick brown fox",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("the quick brown fox","The quick brown fox",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("The quick brown FOX","The quick brown fox",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("The quick brown FOX","The quick brown fox",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("The quick brown FOX","The quick brown fox",[caseless]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"">> = iolist_to_binary(join(re:split("abcd
9;$\\?caxyz","abcd\\t\\n\\r\\f\\a\\e\\071\\x3b\\$\\\\\\?caxyz",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcd
9;$\\?caxyz","abcd\\t\\n\\r\\f\\a\\e\\071\\x3b\\$\\\\\\?caxyz",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcd
9;$\\?caxyz","abcd\\t\\n\\r\\f\\a\\e\\071\\x3b\\$\\\\\\?caxyz",[]))),
<<"">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("abxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaaabcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("abxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("abxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aabxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aabxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaaabxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("abcxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("abcxyzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aabcxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aabcxyzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABBzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<":">> = 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}]))),
<<":">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypABBzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<">>>">> = iolist_to_binary(join(re:split(">>>aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<">>>:">> = 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}]))),
<<">>>:">> = iolist_to_binary(join(re:split(">>>aaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<">">> = iolist_to_binary(join(re:split(">aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<">:">> = 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}]))),
<<">:">> = iolist_to_binary(join(re:split(">aaaabxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<">>>>">> = iolist_to_binary(join(re:split(">>>>abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[trim]))),
<<">>>>:">> = 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}]))),
<<">>>>:">> = iolist_to_binary(join(re:split(">>>>abcxyzpqrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"*** 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]))),
<<"*** 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}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"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]))),
<<"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}]))),
<<"abxyzpqrrabbxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"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]))),
<<"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}]))),
<<"abxyzpqrrrrabbxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrrrabbxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"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]))),
<<"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}]))),
<<"abxyzpqrrrabxyyyypqAzz">> = iolist_to_binary(join(re:split("abxyzpqrrrabxyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"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]))),
<<"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}]))),
<<"aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"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]))),
<<"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}]))),
<<"aaaabcxyzzzzpqrrrabbbxyyypqAzz">> = iolist_to_binary(join(re:split("aaaabcxyzzzzpqrrrabbbxyyypqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<"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]))),
<<"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}]))),
<<"aaabcxyzpqrrrabbxyyyypqqqqqqqAzz">> = iolist_to_binary(join(re:split("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz","a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abczz","^(abc){1,2}zz",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abczz","^(abc){1,2}zz",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abczz","^(abc){1,2}zz",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abcabczz","^(abc){1,2}zz",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabczz","^(abc){1,2}zz",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabczz","^(abc){1,2}zz",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(abc){1,2}zz",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(abc){1,2}zz",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(abc){1,2}zz",[]))),
<<"zz">> = iolist_to_binary(join(re:split("zz","^(abc){1,2}zz",[trim]))),
<<"zz">> = iolist_to_binary(join(re:split("zz","^(abc){1,2}zz",[{parts,
2}]))),
<<"zz">> = iolist_to_binary(join(re:split("zz","^(abc){1,2}zz",[]))),
<<"abcabcabczz">> = iolist_to_binary(join(re:split("abcabcabczz","^(abc){1,2}zz",[trim]))),
<<"abcabcabczz">> = iolist_to_binary(join(re:split("abcabcabczz","^(abc){1,2}zz",[{parts,
2}]))),
<<"abcabcabczz">> = iolist_to_binary(join(re:split("abcabcabczz","^(abc){1,2}zz",[]))),
<<">>abczz">> = iolist_to_binary(join(re:split(">>abczz","^(abc){1,2}zz",[trim]))),
<<">>abczz">> = iolist_to_binary(join(re:split(">>abczz","^(abc){1,2}zz",[{parts,
2}]))),
<<">>abczz">> = iolist_to_binary(join(re:split(">>abczz","^(abc){1,2}zz",[]))),
<<":b">> = iolist_to_binary(join(re:split("bc","^(b+?|a){1,2}?c",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("bc","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("bc","^(b+?|a){1,2}?c",[]))),
<<":b">> = iolist_to_binary(join(re:split("bbc","^(b+?|a){1,2}?c",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("bbc","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("bbc","^(b+?|a){1,2}?c",[]))),
<<":bb">> = iolist_to_binary(join(re:split("bbbc","^(b+?|a){1,2}?c",[trim]))),
<<":bb:">> = iolist_to_binary(join(re:split("bbbc","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":bb:">> = iolist_to_binary(join(re:split("bbbc","^(b+?|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("aac","^(b+?|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aac","^(b+?|a){1,2}?c",[]))),
<<":bbbbbbbbbbb">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+?|a){1,2}?c",[trim]))),
<<":bbbbbbbbbbb:">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":bbbbbbbbbbb:">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+?|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+?|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+?|a){1,2}?c",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+?|a){1,2}?c",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+?|a){1,2}?c",[]))),
<<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+?|a){1,2}?c",[trim]))),
<<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+?|a){1,2}?c",[]))),
<<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+?|a){1,2}?c",[trim]))),
<<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+?|a){1,2}?c",[]))),
<<":b">> = iolist_to_binary(join(re:split("bc","^(b+|a){1,2}c",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("bc","^(b+|a){1,2}c",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("bc","^(b+|a){1,2}c",[]))),
<<":bb">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}c",[trim]))),
<<":bb:">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}c",[{parts,
2}]))),
<<":bb:">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}c",[]))),
<<":bbb">> = iolist_to_binary(join(re:split("bbbc","^(b+|a){1,2}c",[trim]))),
<<":bbb:">> = iolist_to_binary(join(re:split("bbbc","^(b+|a){1,2}c",[{parts,
2}]))),
<<":bbb:">> = iolist_to_binary(join(re:split("bbbc","^(b+|a){1,2}c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}c",[]))),
<<":a">> = iolist_to_binary(join(re:split("aac","^(b+|a){1,2}c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aac","^(b+|a){1,2}c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aac","^(b+|a){1,2}c",[]))),
<<":bbbbbbbbbbb">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+|a){1,2}c",[trim]))),
<<":bbbbbbbbbbb:">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+|a){1,2}c",[{parts,
2}]))),
<<":bbbbbbbbbbb:">> = iolist_to_binary(join(re:split("abbbbbbbbbbbc","^(b+|a){1,2}c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+|a){1,2}c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+|a){1,2}c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbbbbbbbbac","^(b+|a){1,2}c",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+|a){1,2}c",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+|a){1,2}c",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b+|a){1,2}c",[]))),
<<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+|a){1,2}c",[trim]))),
<<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+|a){1,2}c",[{parts,
2}]))),
<<"aaac">> = iolist_to_binary(join(re:split("aaac","^(b+|a){1,2}c",[]))),
<<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+|a){1,2}c",[trim]))),
<<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+|a){1,2}c",[{parts,
2}]))),
<<"abbbbbbbbbbbac">> = iolist_to_binary(join(re:split("abbbbbbbbbbbac","^(b+|a){1,2}c",[]))),
<<":b">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}?bc",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}?bc",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("bbc","^(b+|a){1,2}?bc",[]))),
<<":ba">> = iolist_to_binary(join(re:split("babc","^(b*|ba){1,2}?bc",[trim]))),
<<":ba:">> = iolist_to_binary(join(re:split("babc","^(b*|ba){1,2}?bc",[{parts,
2}]))),
<<":ba:">> = iolist_to_binary(join(re:split("babc","^(b*|ba){1,2}?bc",[]))),
<<":ba">> = iolist_to_binary(join(re:split("bbabc","^(b*|ba){1,2}?bc",[trim]))),
<<":ba:">> = iolist_to_binary(join(re:split("bbabc","^(b*|ba){1,2}?bc",[{parts,
2}]))),
<<":ba:">> = iolist_to_binary(join(re:split("bbabc","^(b*|ba){1,2}?bc",[]))),
<<":ba">> = iolist_to_binary(join(re:split("bababc","^(b*|ba){1,2}?bc",[trim]))),
<<":ba:">> = iolist_to_binary(join(re:split("bababc","^(b*|ba){1,2}?bc",[{parts,
2}]))),
<<":ba:">> = iolist_to_binary(join(re:split("bababc","^(b*|ba){1,2}?bc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b*|ba){1,2}?bc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b*|ba){1,2}?bc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(b*|ba){1,2}?bc",[]))),
<<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(b*|ba){1,2}?bc",[trim]))),
<<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(b*|ba){1,2}?bc",[{parts,
2}]))),
<<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(b*|ba){1,2}?bc",[]))),
<<"babababc">> = iolist_to_binary(join(re:split("babababc","^(b*|ba){1,2}?bc",[trim]))),
<<"babababc">> = iolist_to_binary(join(re:split("babababc","^(b*|ba){1,2}?bc",[{parts,
2}]))),
<<"babababc">> = iolist_to_binary(join(re:split("babababc","^(b*|ba){1,2}?bc",[]))),
<<":ba">> = iolist_to_binary(join(re:split("babc","^(ba|b*){1,2}?bc",[trim]))),
<<":ba:">> = iolist_to_binary(join(re:split("babc","^(ba|b*){1,2}?bc",[{parts,
2}]))),
<<":ba:">> = iolist_to_binary(join(re:split("babc","^(ba|b*){1,2}?bc",[]))),
<<":ba">> = iolist_to_binary(join(re:split("bbabc","^(ba|b*){1,2}?bc",[trim]))),
<<":ba:">> = iolist_to_binary(join(re:split("bbabc","^(ba|b*){1,2}?bc",[{parts,
2}]))),
<<":ba:">> = iolist_to_binary(join(re:split("bbabc","^(ba|b*){1,2}?bc",[]))),
<<":ba">> = iolist_to_binary(join(re:split("bababc","^(ba|b*){1,2}?bc",[trim]))),
<<":ba:">> = iolist_to_binary(join(re:split("bababc","^(ba|b*){1,2}?bc",[{parts,
2}]))),
<<":ba:">> = iolist_to_binary(join(re:split("bababc","^(ba|b*){1,2}?bc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ba|b*){1,2}?bc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ba|b*){1,2}?bc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ba|b*){1,2}?bc",[]))),
<<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(ba|b*){1,2}?bc",[trim]))),
<<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(ba|b*){1,2}?bc",[{parts,
2}]))),
<<"bababbc">> = iolist_to_binary(join(re:split("bababbc","^(ba|b*){1,2}?bc",[]))),
<<"babababc">> = iolist_to_binary(join(re:split("babababc","^(ba|b*){1,2}?bc",[trim]))),
<<"babababc">> = iolist_to_binary(join(re:split("babababc","^(ba|b*){1,2}?bc",[{parts,
2}]))),
<<"babababc">> = iolist_to_binary(join(re:split("babababc","^(ba|b*){1,2}?bc",[]))),
<<"">> = iolist_to_binary(join(re:split(";z","^\\ca\\cA\\c[\\c{\\c:",[trim]))),
<<":">> = iolist_to_binary(join(re:split(";z","^\\ca\\cA\\c[\\c{\\c:",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split(";z","^\\ca\\cA\\c[\\c{\\c:",[]))),
<<":thing">> = iolist_to_binary(join(re:split("athing","^[ab\\]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("athing","^[ab\\]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("athing","^[ab\\]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("bthing","^[ab\\]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("bthing","^[ab\\]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("bthing","^[ab\\]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("]thing","^[ab\\]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("]thing","^[ab\\]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("]thing","^[ab\\]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("cthing","^[ab\\]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("cthing","^[ab\\]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("cthing","^[ab\\]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("dthing","^[ab\\]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("dthing","^[ab\\]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("dthing","^[ab\\]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("ething","^[ab\\]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("ething","^[ab\\]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("ething","^[ab\\]cde]",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[ab\\]cde]",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[ab\\]cde]",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[ab\\]cde]",[]))),
<<"fthing">> = iolist_to_binary(join(re:split("fthing","^[ab\\]cde]",[trim]))),
<<"fthing">> = iolist_to_binary(join(re:split("fthing","^[ab\\]cde]",[{parts,
2}]))),
<<"fthing">> = iolist_to_binary(join(re:split("fthing","^[ab\\]cde]",[]))),
<<"[thing">> = iolist_to_binary(join(re:split("[thing","^[ab\\]cde]",[trim]))),
<<"[thing">> = iolist_to_binary(join(re:split("[thing","^[ab\\]cde]",[{parts,
2}]))),
<<"[thing">> = iolist_to_binary(join(re:split("[thing","^[ab\\]cde]",[]))),
<<"\\thing">> = iolist_to_binary(join(re:split("\\thing","^[ab\\]cde]",[trim]))),
<<"\\thing">> = iolist_to_binary(join(re:split("\\thing","^[ab\\]cde]",[{parts,
2}]))),
<<"\\thing">> = iolist_to_binary(join(re:split("\\thing","^[ab\\]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("]thing","^[]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("]thing","^[]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("]thing","^[]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("cthing","^[]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("cthing","^[]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("cthing","^[]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("dthing","^[]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("dthing","^[]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("dthing","^[]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("ething","^[]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("ething","^[]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("ething","^[]cde]",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[]cde]",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[]cde]",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[]cde]",[]))),
<<"athing">> = iolist_to_binary(join(re:split("athing","^[]cde]",[trim]))),
<<"athing">> = iolist_to_binary(join(re:split("athing","^[]cde]",[{parts,
2}]))),
<<"athing">> = iolist_to_binary(join(re:split("athing","^[]cde]",[]))),
<<"fthing">> = iolist_to_binary(join(re:split("fthing","^[]cde]",[trim]))),
<<"fthing">> = iolist_to_binary(join(re:split("fthing","^[]cde]",[{parts,
2}]))),
<<"fthing">> = iolist_to_binary(join(re:split("fthing","^[]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("fthing","^[^ab\\]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("fthing","^[^ab\\]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("fthing","^[^ab\\]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("[thing","^[^ab\\]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("[thing","^[^ab\\]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("[thing","^[^ab\\]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("\\thing","^[^ab\\]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("\\thing","^[^ab\\]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("\\thing","^[^ab\\]cde]",[]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^ab\\]cde]",[trim]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^ab\\]cde]",[{parts,
2}]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^ab\\]cde]",[]))),
<<"athing">> = iolist_to_binary(join(re:split("athing","^[^ab\\]cde]",[trim]))),
<<"athing">> = iolist_to_binary(join(re:split("athing","^[^ab\\]cde]",[{parts,
2}]))),
<<"athing">> = iolist_to_binary(join(re:split("athing","^[^ab\\]cde]",[]))),
<<"bthing">> = iolist_to_binary(join(re:split("bthing","^[^ab\\]cde]",[trim]))),
<<"bthing">> = iolist_to_binary(join(re:split("bthing","^[^ab\\]cde]",[{parts,
2}]))),
<<"bthing">> = iolist_to_binary(join(re:split("bthing","^[^ab\\]cde]",[]))),
<<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^ab\\]cde]",[trim]))),
<<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^ab\\]cde]",[{parts,
2}]))),
<<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^ab\\]cde]",[]))),
<<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^ab\\]cde]",[trim]))),
<<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^ab\\]cde]",[{parts,
2}]))),
<<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^ab\\]cde]",[]))),
<<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^ab\\]cde]",[trim]))),
<<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^ab\\]cde]",[{parts,
2}]))),
<<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^ab\\]cde]",[]))),
<<"ething">> = iolist_to_binary(join(re:split("ething","^[^ab\\]cde]",[trim]))),
<<"ething">> = iolist_to_binary(join(re:split("ething","^[^ab\\]cde]",[{parts,
2}]))),
<<"ething">> = iolist_to_binary(join(re:split("ething","^[^ab\\]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("athing","^[^]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("athing","^[^]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("athing","^[^]cde]",[]))),
<<":thing">> = iolist_to_binary(join(re:split("fthing","^[^]cde]",[trim]))),
<<":thing">> = iolist_to_binary(join(re:split("fthing","^[^]cde]",[{parts,
2}]))),
<<":thing">> = iolist_to_binary(join(re:split("fthing","^[^]cde]",[]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^]cde]",[trim]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^]cde]",[{parts,
2}]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[^]cde]",[]))),
<<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^]cde]",[trim]))),
<<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^]cde]",[{parts,
2}]))),
<<"]thing">> = iolist_to_binary(join(re:split("]thing","^[^]cde]",[]))),
<<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^]cde]",[trim]))),
<<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^]cde]",[{parts,
2}]))),
<<"cthing">> = iolist_to_binary(join(re:split("cthing","^[^]cde]",[]))),
<<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^]cde]",[trim]))),
<<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^]cde]",[{parts,
2}]))),
<<"dthing">> = iolist_to_binary(join(re:split("dthing","^[^]cde]",[]))),
<<"ething">> = iolist_to_binary(join(re:split("ething","^[^]cde]",[trim]))),
<<"ething">> = iolist_to_binary(join(re:split("ething","^[^]cde]",[{parts,
2}]))),
<<"ething">> = iolist_to_binary(join(re:split("ething","^[^]cde]",[]))),
<<"">> = iolist_to_binary(join(re:split("0","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("0","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("0","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("1","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("1","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("1","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("2","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("2","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("2","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("3","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("3","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("3","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("4","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("4","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("4","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("5","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("5","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("5","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("6","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("6","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("6","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("7","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("7","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("7","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("8","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("8","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("8","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("9","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("9","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("9","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("10","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("10","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("10","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("100","^[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("100","^[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("100","^[0-9]+$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[0-9]+$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[0-9]+$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[0-9]+$",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^[0-9]+$",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^[0-9]+$",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("enter","^.*nter",[trim]))),
<<":">> = iolist_to_binary(join(re:split("enter","^.*nter",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("enter","^.*nter",[]))),
<<"">> = iolist_to_binary(join(re:split("inter","^.*nter",[trim]))),
<<":">> = iolist_to_binary(join(re:split("inter","^.*nter",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("inter","^.*nter",[]))),
<<"">> = iolist_to_binary(join(re:split("uponter","^.*nter",[trim]))),
<<":">> = iolist_to_binary(join(re:split("uponter","^.*nter",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("uponter","^.*nter",[]))),
ok.
run1() ->
<<"">> = iolist_to_binary(join(re:split("xxx0","^xxx[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("xxx0","^xxx[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("xxx0","^xxx[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("xxx1234","^xxx[0-9]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("xxx1234","^xxx[0-9]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("xxx1234","^xxx[0-9]+$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^xxx[0-9]+$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^xxx[0-9]+$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^xxx[0-9]+$",[]))),
<<"xxx">> = iolist_to_binary(join(re:split("xxx","^xxx[0-9]+$",[trim]))),
<<"xxx">> = iolist_to_binary(join(re:split("xxx","^xxx[0-9]+$",[{parts,
2}]))),
<<"xxx">> = iolist_to_binary(join(re:split("xxx","^xxx[0-9]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("x123","^.+[0-9][0-9][0-9]$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("x123","^.+[0-9][0-9][0-9]$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("x123","^.+[0-9][0-9][0-9]$",[]))),
<<"">> = iolist_to_binary(join(re:split("xx123","^.+[0-9][0-9][0-9]$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("xx123","^.+[0-9][0-9][0-9]$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("xx123","^.+[0-9][0-9][0-9]$",[]))),
<<"">> = iolist_to_binary(join(re:split("123456","^.+[0-9][0-9][0-9]$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("123456","^.+[0-9][0-9][0-9]$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("123456","^.+[0-9][0-9][0-9]$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+[0-9][0-9][0-9]$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+[0-9][0-9][0-9]$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+[0-9][0-9][0-9]$",[]))),
<<"123">> = iolist_to_binary(join(re:split("123","^.+[0-9][0-9][0-9]$",[trim]))),
<<"123">> = iolist_to_binary(join(re:split("123","^.+[0-9][0-9][0-9]$",[{parts,
2}]))),
<<"123">> = iolist_to_binary(join(re:split("123","^.+[0-9][0-9][0-9]$",[]))),
<<"">> = iolist_to_binary(join(re:split("x1234","^.+[0-9][0-9][0-9]$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("x1234","^.+[0-9][0-9][0-9]$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("x1234","^.+[0-9][0-9][0-9]$",[]))),
<<"">> = iolist_to_binary(join(re:split("x123","^.+?[0-9][0-9][0-9]$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("x123","^.+?[0-9][0-9][0-9]$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("x123","^.+?[0-9][0-9][0-9]$",[]))),
<<"">> = iolist_to_binary(join(re:split("xx123","^.+?[0-9][0-9][0-9]$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("xx123","^.+?[0-9][0-9][0-9]$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("xx123","^.+?[0-9][0-9][0-9]$",[]))),
<<"">> = iolist_to_binary(join(re:split("123456","^.+?[0-9][0-9][0-9]$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("123456","^.+?[0-9][0-9][0-9]$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("123456","^.+?[0-9][0-9][0-9]$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+?[0-9][0-9][0-9]$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+?[0-9][0-9][0-9]$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.+?[0-9][0-9][0-9]$",[]))),
<<"123">> = iolist_to_binary(join(re:split("123","^.+?[0-9][0-9][0-9]$",[trim]))),
<<"123">> = iolist_to_binary(join(re:split("123","^.+?[0-9][0-9][0-9]$",[{parts,
2}]))),
<<"123">> = iolist_to_binary(join(re:split("123","^.+?[0-9][0-9][0-9]$",[]))),
<<"">> = iolist_to_binary(join(re:split("x1234","^.+?[0-9][0-9][0-9]$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("x1234","^.+?[0-9][0-9][0-9]$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("x1234","^.+?[0-9][0-9][0-9]$",[]))),
<<":abc:pqr">> = iolist_to_binary(join(re:split("abc!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))),
<<":abc:pqr:">> = iolist_to_binary(join(re:split("abc!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[{parts,
2}]))),
<<":abc:pqr:">> = iolist_to_binary(join(re:split("abc!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))),
<<"!pqr=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))),
<<"!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}]))),
<<"!pqr=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("!pqr=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))),
<<"abc!=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("abc!=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[trim]))),
<<"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}]))),
<<"abc!=apquxz.ixr.zzz.ac.uk">> = iolist_to_binary(join(re:split("abc!=apquxz.ixr.zzz.ac.uk","^([^!]+)!(.+)=apquxz\\.ixr\\.zzz\\.ac\\.uk$",[]))),
<<"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]))),
<<"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}]))),
<<"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$",[]))),
<<"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]))),
<<"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}]))),
<<"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$",[]))),
<<"Well, we need a colon: somewhere">> = iolist_to_binary(join(re:split("Well, we need a colon: somewhere",":",[trim]))),
<<"Well, we need a colon: somewhere">> = iolist_to_binary(join(re:split("Well, we need a colon: somewhere",":",[{parts,
2}]))),
<<"Well, we need a colon: somewhere">> = iolist_to_binary(join(re:split("Well, we need a colon: somewhere",":",[]))),
<<"*** Fail if we don't">> = iolist_to_binary(join(re:split("*** Fail if we don't",":",[trim]))),
<<"*** Fail if we don't">> = iolist_to_binary(join(re:split("*** Fail if we don't",":",[{parts,
2}]))),
<<"*** Fail if we don't">> = iolist_to_binary(join(re:split("*** Fail if we don't",":",[]))),
<<":0abc">> = iolist_to_binary(join(re:split("0abc","([\\da-f:]+)$",[caseless,
trim]))),
<<":0abc:">> = iolist_to_binary(join(re:split("0abc","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<":0abc:">> = iolist_to_binary(join(re:split("0abc","([\\da-f:]+)$",[caseless]))),
<<":abc">> = iolist_to_binary(join(re:split("abc","([\\da-f:]+)$",[caseless,
trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc","([\\da-f:]+)$",[caseless]))),
<<":fed">> = iolist_to_binary(join(re:split("fed","([\\da-f:]+)$",[caseless,
trim]))),
<<":fed:">> = iolist_to_binary(join(re:split("fed","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<":fed:">> = iolist_to_binary(join(re:split("fed","([\\da-f:]+)$",[caseless]))),
<<":E">> = iolist_to_binary(join(re:split("E","([\\da-f:]+)$",[caseless,
trim]))),
<<":E:">> = iolist_to_binary(join(re:split("E","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<":E:">> = iolist_to_binary(join(re:split("E","([\\da-f:]+)$",[caseless]))),
<<":::">> = iolist_to_binary(join(re:split("::","([\\da-f:]+)$",[caseless,
trim]))),
<<"::::">> = iolist_to_binary(join(re:split("::","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<"::::">> = iolist_to_binary(join(re:split("::","([\\da-f:]+)$",[caseless]))),
<<":5f03:12C0::932e">> = iolist_to_binary(join(re:split("5f03:12C0::932e","([\\da-f:]+)$",[caseless,
trim]))),
<<":5f03:12C0::932e:">> = iolist_to_binary(join(re:split("5f03:12C0::932e","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<":5f03:12C0::932e:">> = iolist_to_binary(join(re:split("5f03:12C0::932e","([\\da-f:]+)$",[caseless]))),
<<"fed :def">> = iolist_to_binary(join(re:split("fed def","([\\da-f:]+)$",[caseless,
trim]))),
<<"fed :def:">> = iolist_to_binary(join(re:split("fed def","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<"fed :def:">> = iolist_to_binary(join(re:split("fed def","([\\da-f:]+)$",[caseless]))),
<<"Any old stu:ff">> = iolist_to_binary(join(re:split("Any old stuff","([\\da-f:]+)$",[caseless,
trim]))),
<<"Any old stu:ff:">> = iolist_to_binary(join(re:split("Any old stuff","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<"Any old stu:ff:">> = iolist_to_binary(join(re:split("Any old stuff","([\\da-f:]+)$",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","([\\da-f:]+)$",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","([\\da-f:]+)$",[caseless]))),
<<"0zzz">> = iolist_to_binary(join(re:split("0zzz","([\\da-f:]+)$",[caseless,
trim]))),
<<"0zzz">> = iolist_to_binary(join(re:split("0zzz","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<"0zzz">> = iolist_to_binary(join(re:split("0zzz","([\\da-f:]+)$",[caseless]))),
<<"gzzz">> = iolist_to_binary(join(re:split("gzzz","([\\da-f:]+)$",[caseless,
trim]))),
<<"gzzz">> = iolist_to_binary(join(re:split("gzzz","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<"gzzz">> = iolist_to_binary(join(re:split("gzzz","([\\da-f:]+)$",[caseless]))),
<<"fed ">> = iolist_to_binary(join(re:split("fed ","([\\da-f:]+)$",[caseless,
trim]))),
<<"fed ">> = iolist_to_binary(join(re:split("fed ","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<"fed ">> = iolist_to_binary(join(re:split("fed ","([\\da-f:]+)$",[caseless]))),
<<"Any old rubbish">> = iolist_to_binary(join(re:split("Any old rubbish","([\\da-f:]+)$",[caseless,
trim]))),
<<"Any old rubbish">> = iolist_to_binary(join(re:split("Any old rubbish","([\\da-f:]+)$",[caseless,
{parts,
2}]))),
<<"Any old rubbish">> = iolist_to_binary(join(re:split("Any old rubbish","([\\da-f:]+)$",[caseless]))),
<<":1:2:3">> = iolist_to_binary(join(re:split(".1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))),
<<":1:2:3:">> = iolist_to_binary(join(re:split(".1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts,
2}]))),
<<":1:2:3:">> = iolist_to_binary(join(re:split(".1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))),
<<":12:123:0">> = iolist_to_binary(join(re:split("A.12.123.0","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))),
<<":12:123:0:">> = iolist_to_binary(join(re:split("A.12.123.0","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts,
2}]))),
<<":12:123:0:">> = iolist_to_binary(join(re:split("A.12.123.0","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))),
<<".1.2.3333">> = iolist_to_binary(join(re:split(".1.2.3333","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))),
<<".1.2.3333">> = iolist_to_binary(join(re:split(".1.2.3333","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts,
2}]))),
<<".1.2.3333">> = iolist_to_binary(join(re:split(".1.2.3333","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))),
<<"1.2.3">> = iolist_to_binary(join(re:split("1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))),
<<"1.2.3">> = iolist_to_binary(join(re:split("1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts,
2}]))),
<<"1.2.3">> = iolist_to_binary(join(re:split("1.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))),
<<"1234.2.3">> = iolist_to_binary(join(re:split("1234.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[trim]))),
<<"1234.2.3">> = iolist_to_binary(join(re:split("1234.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[{parts,
2}]))),
<<"1234.2.3">> = iolist_to_binary(join(re:split("1234.2.3","^.*\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$",[]))),
<<":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]))),
<<":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}]))),
<<":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*$",[]))),
<<":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]))),
<<":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}]))),
<<":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*$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\d+)\\s+IN\\s+SOA\\s+(\\S+)\\s+(\\S+)\\s*\\(\\s*$",[]))),
<<"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]))),
<<"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}]))),
<<"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*$",[]))),
<<"">> = iolist_to_binary(join(re:split("a.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))),
<<"::">> = 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}]))),
<<"::">> = iolist_to_binary(join(re:split("a.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))),
<<"">> = iolist_to_binary(join(re:split("Z.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))),
<<"::">> = 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}]))),
<<"::">> = iolist_to_binary(join(re:split("Z.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))),
<<"">> = iolist_to_binary(join(re:split("2.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[trim]))),
<<"::">> = 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}]))),
<<"::">> = iolist_to_binary(join(re:split("2.","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))),
<<":.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]))),
<<":.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}]))),
<<":.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\\-]*)*\\.$",[]))),
<<":.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]))),
<<":.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}]))),
<<":.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\\-]*)*\\.$",[]))),
<<":.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]))),
<<":.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}]))),
<<":.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\\-]*)*\\.$",[]))),
<<"*** 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]))),
<<"*** 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}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-zA-Z\\d][a-zA-Z\\d\\-]*(\\.[a-zA-Z\\d][a-zA-z\\d\\-]*)*\\.$",[]))),
<<"-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]))),
<<"-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}]))),
<<"-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\\-]*)*\\.$",[]))),
<<"">> = iolist_to_binary(join(re:split("*.a","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[trim]))),
<<"::::">> = 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}]))),
<<"::::">> = iolist_to_binary(join(re:split("*.a","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))),
<<":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]))),
<<":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}]))),
<<":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]+)?)*$",[]))),
<<":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]))),
<<":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}]))),
<<":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]+)?)*$",[]))),
<<":-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]))),
<<":-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}]))),
<<":-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]+)?)*$",[]))),
<<"*** 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]))),
<<"*** 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}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))),
<<"*.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]))),
<<"*.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}]))),
<<"*.0">> = iolist_to_binary(join(re:split("*.0","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))),
<<"*.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]))),
<<"*.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}]))),
<<"*.a-">> = iolist_to_binary(join(re:split("*.a-","^\\*\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?(\\.[a-z]([a-z\\-\\d]*[a-z\\d]+)?)*$",[]))),
<<"*.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]))),
<<"*.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}]))),
<<"*.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]+)?)*$",[]))),
<<"*.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]))),
<<"*.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}]))),
<<"*.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]+)?)*$",[]))),
<<":de:abd:e">> = iolist_to_binary(join(re:split("abde","^(?=ab(de))(abd)(e)",[trim]))),
<<":de:abd:e:">> = iolist_to_binary(join(re:split("abde","^(?=ab(de))(abd)(e)",[{parts,
2}]))),
<<":de:abd:e:">> = iolist_to_binary(join(re:split("abde","^(?=ab(de))(abd)(e)",[]))),
<<"::abd:f">> = iolist_to_binary(join(re:split("abdf","^(?!(ab)de|x)(abd)(f)",[trim]))),
<<"::abd:f:">> = iolist_to_binary(join(re:split("abdf","^(?!(ab)de|x)(abd)(f)",[{parts,
2}]))),
<<"::abd:f:">> = iolist_to_binary(join(re:split("abdf","^(?!(ab)de|x)(abd)(f)",[]))),
<<":abcd:cd:ab:cd">> = iolist_to_binary(join(re:split("abcd","^(?=(ab(cd)))(ab)",[trim]))),
<<":abcd:cd:ab:cd">> = iolist_to_binary(join(re:split("abcd","^(?=(ab(cd)))(ab)",[{parts,
2}]))),
<<":abcd:cd:ab:cd">> = iolist_to_binary(join(re:split("abcd","^(?=(ab(cd)))(ab)",[]))),
<<":.d">> = iolist_to_binary(join(re:split("a.b.c.d","^[\\da-f](\\.[\\da-f])*$",[caseless,
trim]))),
<<":.d:">> = iolist_to_binary(join(re:split("a.b.c.d","^[\\da-f](\\.[\\da-f])*$",[caseless,
{parts,
2}]))),
<<":.d:">> = iolist_to_binary(join(re:split("a.b.c.d","^[\\da-f](\\.[\\da-f])*$",[caseless]))),
<<":.D">> = iolist_to_binary(join(re:split("A.B.C.D","^[\\da-f](\\.[\\da-f])*$",[caseless,
trim]))),
<<":.D:">> = iolist_to_binary(join(re:split("A.B.C.D","^[\\da-f](\\.[\\da-f])*$",[caseless,
{parts,
2}]))),
<<":.D:">> = iolist_to_binary(join(re:split("A.B.C.D","^[\\da-f](\\.[\\da-f])*$",[caseless]))),
<<":.C">> = iolist_to_binary(join(re:split("a.b.c.1.2.3.C","^[\\da-f](\\.[\\da-f])*$",[caseless,
trim]))),
<<":.C:">> = iolist_to_binary(join(re:split("a.b.c.1.2.3.C","^[\\da-f](\\.[\\da-f])*$",[caseless,
{parts,
2}]))),
<<":.C:">> = iolist_to_binary(join(re:split("a.b.c.1.2.3.C","^[\\da-f](\\.[\\da-f])*$",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("\"1234\"","^\\\".*\\\"\\s*(;.*)?$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("\"1234\"","^\\\".*\\\"\\s*(;.*)?$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("\"1234\"","^\\\".*\\\"\\s*(;.*)?$",[]))),
<<":;">> = iolist_to_binary(join(re:split("\"abcd\" ;","^\\\".*\\\"\\s*(;.*)?$",[trim]))),
<<":;:">> = iolist_to_binary(join(re:split("\"abcd\" ;","^\\\".*\\\"\\s*(;.*)?$",[{parts,
2}]))),
<<":;:">> = iolist_to_binary(join(re:split("\"abcd\" ;","^\\\".*\\\"\\s*(;.*)?$",[]))),
<<":; rhubarb">> = iolist_to_binary(join(re:split("\"\" ; rhubarb","^\\\".*\\\"\\s*(;.*)?$",[trim]))),
<<":; rhubarb:">> = iolist_to_binary(join(re:split("\"\" ; rhubarb","^\\\".*\\\"\\s*(;.*)?$",[{parts,
2}]))),
<<":; rhubarb:">> = iolist_to_binary(join(re:split("\"\" ; rhubarb","^\\\".*\\\"\\s*(;.*)?$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\\".*\\\"\\s*(;.*)?$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\\".*\\\"\\s*(;.*)?$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\\".*\\\"\\s*(;.*)?$",[]))),
<<"\"1234\" : things">> = iolist_to_binary(join(re:split("\"1234\" : things","^\\\".*\\\"\\s*(;.*)?$",[trim]))),
<<"\"1234\" : things">> = iolist_to_binary(join(re:split("\"1234\" : things","^\\\".*\\\"\\s*(;.*)?$",[{parts,
2}]))),
<<"\"1234\" : things">> = iolist_to_binary(join(re:split("\"1234\" : things","^\\\".*\\\"\\s*(;.*)?$",[]))),
<<"">> = iolist_to_binary(join(re:split("","^$",[trim]))),
<<"">> = iolist_to_binary(join(re:split("","^$",[{parts,
2}]))),
<<"">> = iolist_to_binary(join(re:split("","^$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^$",[]))),
<<"">> = iolist_to_binary(join(re:split("ab c"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ab c"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab c"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended]))),
<<"abc">> = iolist_to_binary(join(re:split("abc"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended,
trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended,
{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended]))),
<<"ab cde">> = iolist_to_binary(join(re:split("ab cde"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended,
trim]))),
<<"ab cde">> = iolist_to_binary(join(re:split("ab cde"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended,
{parts,
2}]))),
<<"ab cde">> = iolist_to_binary(join(re:split("ab cde"," ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[extended]))),
<<"">> = iolist_to_binary(join(re:split("ab c","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab c","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab c","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[]))),
<<"ab cde">> = iolist_to_binary(join(re:split("ab cde","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[trim]))),
<<"ab cde">> = iolist_to_binary(join(re:split("ab cde","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[{parts,
2}]))),
<<"ab cde">> = iolist_to_binary(join(re:split("ab cde","(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)",[]))),
<<"">> = iolist_to_binary(join(re:split("a bcd","^ a\\ b[c ]d $",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("a bcd","^ a\\ b[c ]d $",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a bcd","^ a\\ b[c ]d $",[extended]))),
<<"">> = iolist_to_binary(join(re:split("a b d","^ a\\ b[c ]d $",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("a b d","^ a\\ b[c ]d $",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a b d","^ a\\ b[c ]d $",[extended]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^ a\\ b[c ]d $",[extended,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^ a\\ b[c ]d $",[extended,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^ a\\ b[c ]d $",[extended]))),
<<"abcd">> = iolist_to_binary(join(re:split("abcd","^ a\\ b[c ]d $",[extended,
trim]))),
<<"abcd">> = iolist_to_binary(join(re:split("abcd","^ a\\ b[c ]d $",[extended,
{parts,
2}]))),
<<"abcd">> = iolist_to_binary(join(re:split("abcd","^ a\\ b[c ]d $",[extended]))),
<<"ab d">> = iolist_to_binary(join(re:split("ab d","^ a\\ b[c ]d $",[extended,
trim]))),
<<"ab d">> = iolist_to_binary(join(re:split("ab d","^ a\\ b[c ]d $",[extended,
{parts,
2}]))),
<<"ab d">> = iolist_to_binary(join(re:split("ab d","^ a\\ b[c ]d $",[extended]))),
<<":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]))),
<<":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}]))),
<<":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)))$",[]))),
ok.
run2() ->
<<":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]))),
<<":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}]))),
<<":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)))$",[]))),
<<"">> = iolist_to_binary(join(re:split("a+ Z0+
","^[\\w][\\W][\\s][\\S][\\d][\\D][\\b][\\n][\\c]][\\022]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a+ Z0+
","^[\\w][\\W][\\s][\\S][\\d][\\D][\\b][\\n][\\c]][\\022]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a+ Z0+
","^[\\w][\\W][\\s][\\S][\\d][\\D][\\b][\\n][\\c]][\\022]",[]))),
<<"">> = iolist_to_binary(join(re:split(".^$(*+)|{?,?}","^[.^$|()*+?{,}]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split(".^$(*+)|{?,?}","^[.^$|()*+?{,}]+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split(".^$(*+)|{?,?}","^[.^$|()*+?{,}]+",[]))),
<<"">> = iolist_to_binary(join(re:split("z","^a*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("z","^a*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("z","^a*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("az","^a*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("az","^a*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("az","^a*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaz","^a*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaz","^a*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaz","^a*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("a","^a*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","^a*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","^a*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aa","^a*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aa","^a*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aa","^a*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","^a*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^a*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^a*\\w",[]))),
<<":+">> = iolist_to_binary(join(re:split("a+","^a*\\w",[trim]))),
<<":+">> = iolist_to_binary(join(re:split("a+","^a*\\w",[{parts,
2}]))),
<<":+">> = iolist_to_binary(join(re:split("a+","^a*\\w",[]))),
<<":+">> = iolist_to_binary(join(re:split("aa+","^a*\\w",[trim]))),
<<":+">> = iolist_to_binary(join(re:split("aa+","^a*\\w",[{parts,
2}]))),
<<":+">> = iolist_to_binary(join(re:split("aa+","^a*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("z","^a*?\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("z","^a*?\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("z","^a*?\\w",[]))),
<<":z">> = iolist_to_binary(join(re:split("az","^a*?\\w",[trim]))),
<<":z">> = iolist_to_binary(join(re:split("az","^a*?\\w",[{parts,
2}]))),
<<":z">> = iolist_to_binary(join(re:split("az","^a*?\\w",[]))),
<<":aaz">> = iolist_to_binary(join(re:split("aaaz","^a*?\\w",[trim]))),
<<":aaz">> = iolist_to_binary(join(re:split("aaaz","^a*?\\w",[{parts,
2}]))),
<<":aaz">> = iolist_to_binary(join(re:split("aaaz","^a*?\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("a","^a*?\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","^a*?\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","^a*?\\w",[]))),
<<":a">> = iolist_to_binary(join(re:split("aa","^a*?\\w",[trim]))),
<<":a">> = iolist_to_binary(join(re:split("aa","^a*?\\w",[{parts,
2}]))),
<<":a">> = iolist_to_binary(join(re:split("aa","^a*?\\w",[]))),
<<":aaa">> = iolist_to_binary(join(re:split("aaaa","^a*?\\w",[trim]))),
<<":aaa">> = iolist_to_binary(join(re:split("aaaa","^a*?\\w",[{parts,
2}]))),
<<":aaa">> = iolist_to_binary(join(re:split("aaaa","^a*?\\w",[]))),
<<":+">> = iolist_to_binary(join(re:split("a+","^a*?\\w",[trim]))),
<<":+">> = iolist_to_binary(join(re:split("a+","^a*?\\w",[{parts,
2}]))),
<<":+">> = iolist_to_binary(join(re:split("a+","^a*?\\w",[]))),
<<":a+">> = iolist_to_binary(join(re:split("aa+","^a*?\\w",[trim]))),
<<":a+">> = iolist_to_binary(join(re:split("aa+","^a*?\\w",[{parts,
2}]))),
<<":a+">> = iolist_to_binary(join(re:split("aa+","^a*?\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("az","^a+\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("az","^a+\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("az","^a+\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaz","^a+\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaz","^a+\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaz","^a+\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aa","^a+\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aa","^a+\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aa","^a+\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","^a+\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^a+\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^a+\\w",[]))),
<<":+">> = iolist_to_binary(join(re:split("aa+","^a+\\w",[trim]))),
<<":+">> = iolist_to_binary(join(re:split("aa+","^a+\\w",[{parts,
2}]))),
<<":+">> = iolist_to_binary(join(re:split("aa+","^a+\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("az","^a+?\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("az","^a+?\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("az","^a+?\\w",[]))),
<<":az">> = iolist_to_binary(join(re:split("aaaz","^a+?\\w",[trim]))),
<<":az">> = iolist_to_binary(join(re:split("aaaz","^a+?\\w",[{parts,
2}]))),
<<":az">> = iolist_to_binary(join(re:split("aaaz","^a+?\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aa","^a+?\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aa","^a+?\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aa","^a+?\\w",[]))),
<<":aa">> = iolist_to_binary(join(re:split("aaaa","^a+?\\w",[trim]))),
<<":aa">> = iolist_to_binary(join(re:split("aaaa","^a+?\\w",[{parts,
2}]))),
<<":aa">> = iolist_to_binary(join(re:split("aaaa","^a+?\\w",[]))),
<<":+">> = iolist_to_binary(join(re:split("aa+","^a+?\\w",[trim]))),
<<":+">> = iolist_to_binary(join(re:split("aa+","^a+?\\w",[{parts,
2}]))),
<<":+">> = iolist_to_binary(join(re:split("aa+","^a+?\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("1234567890","^\\d{8}\\w{2,}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("1234567890","^\\d{8}\\w{2,}",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("1234567890","^\\d{8}\\w{2,}",[]))),
<<"">> = iolist_to_binary(join(re:split("12345678ab","^\\d{8}\\w{2,}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("12345678ab","^\\d{8}\\w{2,}",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("12345678ab","^\\d{8}\\w{2,}",[]))),
<<"">> = iolist_to_binary(join(re:split("12345678__","^\\d{8}\\w{2,}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("12345678__","^\\d{8}\\w{2,}",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("12345678__","^\\d{8}\\w{2,}",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8}\\w{2,}",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8}\\w{2,}",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8}\\w{2,}",[]))),
<<"1234567">> = iolist_to_binary(join(re:split("1234567","^\\d{8}\\w{2,}",[trim]))),
<<"1234567">> = iolist_to_binary(join(re:split("1234567","^\\d{8}\\w{2,}",[{parts,
2}]))),
<<"1234567">> = iolist_to_binary(join(re:split("1234567","^\\d{8}\\w{2,}",[]))),
<<"">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}$",[]))),
<<"">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}$",[]))),
<<"">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}$",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[aeiou\\d]{4,5}$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[aeiou\\d]{4,5}$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[aeiou\\d]{4,5}$",[]))),
<<"123456">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}$",[trim]))),
<<"123456">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}$",[{parts,
2}]))),
<<"123456">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}$",[]))),
<<"">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}?",[trim]))),
<<":">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}?",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("uoie","^[aeiou\\d]{4,5}?",[]))),
<<"">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}?",[trim]))),
<<":">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}?",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("1234","^[aeiou\\d]{4,5}?",[]))),
<<":5">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}?",[trim]))),
<<":5">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}?",[{parts,
2}]))),
<<":5">> = iolist_to_binary(join(re:split("12345","^[aeiou\\d]{4,5}?",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}?",[trim]))),
<<":a">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}?",[{parts,
2}]))),
<<":a">> = iolist_to_binary(join(re:split("aaaaa","^[aeiou\\d]{4,5}?",[]))),
<<":56">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}?",[trim]))),
<<":56">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}?",[{parts,
2}]))),
<<":56">> = iolist_to_binary(join(re:split("123456","^[aeiou\\d]{4,5}?",[]))),
<<":abc:abc">> = iolist_to_binary(join(re:split("abc=abcabc","\\A(abc|def)=(\\1){2,3}\\Z",[trim]))),
<<":abc:abc:">> = iolist_to_binary(join(re:split("abc=abcabc","\\A(abc|def)=(\\1){2,3}\\Z",[{parts,
2}]))),
<<":abc:abc:">> = iolist_to_binary(join(re:split("abc=abcabc","\\A(abc|def)=(\\1){2,3}\\Z",[]))),
<<":def:def">> = iolist_to_binary(join(re:split("def=defdefdef","\\A(abc|def)=(\\1){2,3}\\Z",[trim]))),
<<":def:def:">> = iolist_to_binary(join(re:split("def=defdefdef","\\A(abc|def)=(\\1){2,3}\\Z",[{parts,
2}]))),
<<":def:def:">> = iolist_to_binary(join(re:split("def=defdefdef","\\A(abc|def)=(\\1){2,3}\\Z",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\A(abc|def)=(\\1){2,3}\\Z",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\A(abc|def)=(\\1){2,3}\\Z",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\A(abc|def)=(\\1){2,3}\\Z",[]))),
<<"abc=defdef">> = iolist_to_binary(join(re:split("abc=defdef","\\A(abc|def)=(\\1){2,3}\\Z",[trim]))),
<<"abc=defdef">> = iolist_to_binary(join(re:split("abc=defdef","\\A(abc|def)=(\\1){2,3}\\Z",[{parts,
2}]))),
<<"abc=defdef">> = iolist_to_binary(join(re:split("abc=defdef","\\A(abc|def)=(\\1){2,3}\\Z",[]))),
<<":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]))),
<<":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}]))),
<<":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$",[]))),
<<":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]))),
<<":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}]))),
<<":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$",[]))),
<<":cataract:aract:ract::3">> = iolist_to_binary(join(re:split("cataract cataract23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[trim]))),
<<":cataract:aract:ract::3:">> = iolist_to_binary(join(re:split("cataract cataract23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[{parts,
2}]))),
<<":cataract:aract:ract::3:">> = iolist_to_binary(join(re:split("cataract cataract23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[]))),
<<":catatonic:atonic:tonic::3">> = iolist_to_binary(join(re:split("catatonic catatonic23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[trim]))),
<<":catatonic:atonic:tonic::3:">> = iolist_to_binary(join(re:split("catatonic catatonic23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[{parts,
2}]))),
<<":catatonic:atonic:tonic::3:">> = iolist_to_binary(join(re:split("catatonic catatonic23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[]))),
<<":caterpillar:erpillar:::3">> = iolist_to_binary(join(re:split("caterpillar caterpillar23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[trim]))),
<<":caterpillar:erpillar:::3:">> = iolist_to_binary(join(re:split("caterpillar caterpillar23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[{parts,
2}]))),
<<":caterpillar:erpillar:::3:">> = iolist_to_binary(join(re:split("caterpillar caterpillar23","(cat(a(ract|tonic)|erpillar)) \\1()2(3)",[]))),
<<":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]))),
<<":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}]))),
<<":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]",[]))),
<<":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]))),
<<":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}]))),
<<":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",[]))),
<<":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]))),
<<":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}]))),
<<":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",[]))),
<<"*** 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]))),
<<"*** 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}]))),
<<"*** 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",[]))),
<<"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]))),
<<"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}]))),
<<"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",[]))),
<<"">> = iolist_to_binary(join(re:split("12
34","^12.34",[dotall,trim]))),
<<":">> = iolist_to_binary(join(re:split("12
34","^12.34",[dotall,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("12
34","^12.34",[dotall]))),
<<"">> = iolist_to_binary(join(re:split("12
34","^12.34",[dotall,
trim]))),
<<":">> = iolist_to_binary(join(re:split("12
34","^12.34",[dotall,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("12
34","^12.34",[dotall]))),
<<"the quick : fox">> = iolist_to_binary(join(re:split("the quick brown fox","\\w+(?=\\t)",[trim]))),
<<"the quick : fox">> = iolist_to_binary(join(re:split("the quick brown fox","\\w+(?=\\t)",[{parts,
2}]))),
<<"the quick : fox">> = iolist_to_binary(join(re:split("the quick brown fox","\\w+(?=\\t)",[]))),
<<"foobar is :lish see?">> = iolist_to_binary(join(re:split("foobar is foolish see?","foo(?!bar)(.*)",[trim]))),
<<"foobar is :lish see?:">> = iolist_to_binary(join(re:split("foobar is foolish see?","foo(?!bar)(.*)",[{parts,
2}]))),
<<"foobar is :lish see?:">> = iolist_to_binary(join(re:split("foobar is foolish see?","foo(?!bar)(.*)",[]))),
<<"foobar c: etc">> = iolist_to_binary(join(re:split("foobar crowbar etc","(?:(?!foo)...|^.{0,2})bar(.*)",[trim]))),
<<"foobar c: etc:">> = iolist_to_binary(join(re:split("foobar crowbar etc","(?:(?!foo)...|^.{0,2})bar(.*)",[{parts,
2}]))),
<<"foobar c: etc:">> = iolist_to_binary(join(re:split("foobar crowbar etc","(?:(?!foo)...|^.{0,2})bar(.*)",[]))),
<<":rel">> = iolist_to_binary(join(re:split("barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[trim]))),
<<":rel:">> = iolist_to_binary(join(re:split("barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[{parts,
2}]))),
<<":rel:">> = iolist_to_binary(join(re:split("barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[]))),
<<":rel">> = iolist_to_binary(join(re:split("2barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[trim]))),
<<":rel:">> = iolist_to_binary(join(re:split("2barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[{parts,
2}]))),
<<":rel:">> = iolist_to_binary(join(re:split("2barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[]))),
<<":rel">> = iolist_to_binary(join(re:split("A barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[trim]))),
<<":rel:">> = iolist_to_binary(join(re:split("A barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[{parts,
2}]))),
<<":rel:">> = iolist_to_binary(join(re:split("A barrel","(?:(?!foo)...|^.{0,2})bar(.*)",[]))),
<<":abc:456">> = iolist_to_binary(join(re:split("abc456","^(\\D*)(?=\\d)(?!123)",[trim]))),
<<":abc:456">> = iolist_to_binary(join(re:split("abc456","^(\\D*)(?=\\d)(?!123)",[{parts,
2}]))),
<<":abc:456">> = iolist_to_binary(join(re:split("abc456","^(\\D*)(?=\\d)(?!123)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[]))),
<<"abc123">> = iolist_to_binary(join(re:split("abc123","^(\\D*)(?=\\d)(?!123)",[trim]))),
<<"abc123">> = iolist_to_binary(join(re:split("abc123","^(\\D*)(?=\\d)(?!123)",[{parts,
2}]))),
<<"abc123">> = iolist_to_binary(join(re:split("abc123","^(\\D*)(?=\\d)(?!123)",[]))),
ok.
run3() ->
<<"">> = iolist_to_binary(join(re:split("1234","^1234(?# test newlines
inside)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("1234","^1234(?# test newlines
inside)",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("1234","^1234(?# test newlines
inside)",[]))),
<<"">> = iolist_to_binary(join(re:split("1234","^1234 #comment in extended re
",[extended,trim]))),
<<":">> = iolist_to_binary(join(re:split("1234","^1234 #comment in extended re
",[extended,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("1234","^1234 #comment in extended re
",[extended]))),
<<"">> = iolist_to_binary(join(re:split("abcd","#rhubarb
abcd",[extended,trim]))),
<<":">> = iolist_to_binary(join(re:split("abcd","#rhubarb
abcd",[extended,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("abcd","#rhubarb
abcd",[extended]))),
<<"">> = iolist_to_binary(join(re:split("abcd","^abcd#rhubarb",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("abcd","^abcd#rhubarb",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcd","^abcd#rhubarb",[extended]))),
<<":a:b">> = iolist_to_binary(join(re:split("aaab","^(a)\\1{2,3}(.)",[trim]))),
<<":a:b:">> = iolist_to_binary(join(re:split("aaab","^(a)\\1{2,3}(.)",[{parts,
2}]))),
<<":a:b:">> = iolist_to_binary(join(re:split("aaab","^(a)\\1{2,3}(.)",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("aaaab","^(a)\\1{2,3}(.)",[trim]))),
<<":a:b:">> = iolist_to_binary(join(re:split("aaaab","^(a)\\1{2,3}(.)",[{parts,
2}]))),
<<":a:b:">> = iolist_to_binary(join(re:split("aaaab","^(a)\\1{2,3}(.)",[]))),
<<":a:a:b">> = iolist_to_binary(join(re:split("aaaaab","^(a)\\1{2,3}(.)",[trim]))),
<<":a:a:b">> = iolist_to_binary(join(re:split("aaaaab","^(a)\\1{2,3}(.)",[{parts,
2}]))),
<<":a:a:b">> = iolist_to_binary(join(re:split("aaaaab","^(a)\\1{2,3}(.)",[]))),
<<":a:a:ab">> = iolist_to_binary(join(re:split("aaaaaab","^(a)\\1{2,3}(.)",[trim]))),
<<":a:a:ab">> = iolist_to_binary(join(re:split("aaaaaab","^(a)\\1{2,3}(.)",[{parts,
2}]))),
<<":a:a:ab">> = iolist_to_binary(join(re:split("aaaaaab","^(a)\\1{2,3}(.)",[]))),
<<"the ">> = iolist_to_binary(join(re:split("the abc","(?!^)abc",[trim]))),
<<"the :">> = iolist_to_binary(join(re:split("the abc","(?!^)abc",[{parts,
2}]))),
<<"the :">> = iolist_to_binary(join(re:split("the abc","(?!^)abc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?!^)abc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?!^)abc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?!^)abc",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(?!^)abc",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(?!^)abc",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(?!^)abc",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","(?=^)abc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?=^)abc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?=^)abc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=^)abc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=^)abc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=^)abc",[]))),
<<"the abc">> = iolist_to_binary(join(re:split("the abc","(?=^)abc",[trim]))),
<<"the abc">> = iolist_to_binary(join(re:split("the abc","(?=^)abc",[{parts,
2}]))),
<<"the abc">> = iolist_to_binary(join(re:split("the abc","(?=^)abc",[]))),
<<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*|b)",[trim]))),
<<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*|b)",[{parts,
2}]))),
<<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*|b)",[]))),
<<":abbbbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*|b)",[trim]))),
<<":abbbbb:">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*|b)",[{parts,
2}]))),
<<":abbbbb:">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*|b)",[]))),
<<":a:bbbbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*?|b)",[trim]))),
<<":a:bbbbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*?|b)",[{parts,
2}]))),
<<":a:bbbbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}?(ab*?|b)",[]))),
<<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*?|b)",[trim]))),
<<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*?|b)",[{parts,
2}]))),
<<":b:bbb">> = iolist_to_binary(join(re:split("aabbbbb","^[ab]{1,3}(ab*?|b)",[]))),
<<"Alan Other <user.ain>">> = iolist_to_binary(join(re:split("Alan Other <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]))),
<<"Alan Other <user.ain>">> = iolist_to_binary(join(re:split("Alan Other <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}]))),
<<"Alan Other <user.ain>">> = iolist_to_binary(join(re:split("Alan Other <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]))),
<<"<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]))),
<<"<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}]))),
<<"<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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"\"A. Other\" <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" <user.1234.ain> (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]))),
<<"\"A. Other\" <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" <user.1234.ain> (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}]))),
<<"\"A. Other\" <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" <user.1234.ain> (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]))),
<<"A. Other <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("A. Other <user.1234.ain> (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]))),
<<"A. Other <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("A. Other <user.1234.ain> (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}]))),
<<"A. Other <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("A. Other <user.1234.ain> (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]))),
<<"\"/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]))),
<<"\"/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}]))),
<<"\"/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]))),
<<"A missing angle <user.where">> = iolist_to_binary(join(re:split("A missing angle <user.where"," (?: [\\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]))),
<<"A missing angle <user.where">> = iolist_to_binary(join(re:split("A missing angle <user.where"," (?: [\\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}]))),
<<"A missing angle <user.where">> = iolist_to_binary(join(re:split("A missing angle <user.where"," (?: [\\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]))),
<<"*** 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]))),
<<"*** 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}]))),
<<"*** 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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"Alan Other <user.ain>">> = iolist_to_binary(join(re:split("Alan Other <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]))),
<<"Alan Other <user.ain>">> = iolist_to_binary(join(re:split("Alan Other <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}]))),
<<"Alan Other <user.ain>">> = iolist_to_binary(join(re:split("Alan Other <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]))),
<<"<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]))),
<<"<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}]))),
<<"<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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"\"A. Other\" <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" <user.1234.ain> (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]))),
<<"\"A. Other\" <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" <user.1234.ain> (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}]))),
<<"\"A. Other\" <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("\"A. Other\" <user.1234.ain> (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]))),
<<"A. Other <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("A. Other <user.1234.ain> (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]))),
<<"A. Other <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("A. Other <user.1234.ain> (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}]))),
<<"A. Other <user.1234.ain> (a comment)">> = iolist_to_binary(join(re:split("A. Other <user.1234.ain> (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]))),
<<"\"/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]))),
<<"\"/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}]))),
<<"\"/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]))),
<<"A missing angle <user.where">> = iolist_to_binary(join(re:split("A missing angle <user.where","[\\040\\t]* # Nab whitespace.
(?:
\\( # (
[^\\\\\\x80-\\xff\\n\\015()] * # normal*
(?: # (
(?: \\\\ [^\\x80-\\xff] |
\\( # (
[^\\\\\\x80-\\xff\\n\\015()] * # 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]))),
<<"A missing angle <user.where">> = iolist_to_binary(join(re:split("A missing angle <user.where","[\\040\\t]* # Nab whitespace.
(?:
\\( # (
[^\\\\\\x80-\\xff\\n\\015()] * # normal*
(?: # (
(?: \\\\ [^\\x80-\\xff] |
\\( # (
[^\\\\\\x80-\\xff\\n\\015()] * # 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}]))),
<<"A missing angle <user.where">> = iolist_to_binary(join(re:split("A missing angle <user.where","[\\040\\t]* # Nab whitespace.
(?:
\\( # (
[^\\\\\\x80-\\xff\\n\\015()] * # normal*
(?: # (
(?: \\\\ [^\\x80-\\xff] |
\\( # (
[^\\\\\\x80-\\xff\\n\\015()] * # 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]))),
<<"*** 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]))),
<<"*** 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}]))),
<<"*** 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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"abcdefpqrxyz0AB">> = iolist_to_binary(join(re:split("abcdefpqrxyz0AB","abc\\0def\\00pqr\\000xyz\\0000AB",[trim]))),
<<"abcdefpqrxyz0AB">> = iolist_to_binary(join(re:split("abcdefpqrxyz0AB","abc\\0def\\00pqr\\000xyz\\0000AB",[{parts,
2}]))),
<<"abcdefpqrxyz0AB">> = iolist_to_binary(join(re:split("abcdefpqrxyz0AB","abc\\0def\\00pqr\\000xyz\\0000AB",[]))),
<<"abc456 abcdefpqrxyz0ABCDE">> = iolist_to_binary(join(re:split("abc456 abcdefpqrxyz0ABCDE","abc\\0def\\00pqr\\000xyz\\0000AB",[trim]))),
<<"abc456 abcdefpqrxyz0ABCDE">> = iolist_to_binary(join(re:split("abc456 abcdefpqrxyz0ABCDE","abc\\0def\\00pqr\\000xyz\\0000AB",[{parts,
2}]))),
<<"abc456 abcdefpqrxyz0ABCDE">> = iolist_to_binary(join(re:split("abc456 abcdefpqrxyz0ABCDE","abc\\0def\\00pqr\\000xyz\\0000AB",[]))),
<<"abc
efpqr0xyz00AB">> = iolist_to_binary(join(re:split("abc
efpqr0xyz00AB","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[trim]))),
<<"abc
efpqr0xyz00AB">> = iolist_to_binary(join(re:split("abc
efpqr0xyz00AB","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[{parts,
2}]))),
<<"abc
efpqr0xyz00AB">> = iolist_to_binary(join(re:split("abc
efpqr0xyz00AB","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[]))),
<<"abc456 abc
efpqr0xyz00ABCDE">> = iolist_to_binary(join(re:split("abc456 abc
efpqr0xyz00ABCDE","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[trim]))),
<<"abc456 abc
efpqr0xyz00ABCDE">> = iolist_to_binary(join(re:split("abc456 abc
efpqr0xyz00ABCDE","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[{parts,
2}]))),
<<"abc456 abc
efpqr0xyz00ABCDE">> = iolist_to_binary(join(re:split("abc456 abc
efpqr0xyz00ABCDE","abc\\x0def\\x00pqr\\x000xyz\\x0000AB",[]))),
<<"A">> = iolist_to_binary(join(re:split("A","^[\\000-\\037]",[trim]))),
<<"A">> = iolist_to_binary(join(re:split("A","^[\\000-\\037]",[{parts,
2}]))),
<<"A">> = iolist_to_binary(join(re:split("A","^[\\000-\\037]",[]))),
<<":B">> = iolist_to_binary(join(re:split("B","^[\\000-\\037]",[trim]))),
<<":B">> = iolist_to_binary(join(re:split("B","^[\\000-\\037]",[{parts,
2}]))),
<<":B">> = iolist_to_binary(join(re:split("B","^[\\000-\\037]",[]))),
<<":C">> = iolist_to_binary(join(re:split("C","^[\\000-\\037]",[trim]))),
<<":C">> = iolist_to_binary(join(re:split("C","^[\\000-\\037]",[{parts,
2}]))),
<<":C">> = iolist_to_binary(join(re:split("C","^[\\000-\\037]",[]))),
<<"">> = iolist_to_binary(join(re:split("","\\0*",[trim]))),
<<"">> = iolist_to_binary(join(re:split("","\\0*",[{parts,
2}]))),
<<"">> = iolist_to_binary(join(re:split("","\\0*",[]))),
<<"The AZ">> = iolist_to_binary(join(re:split("The AZ","A\\x0{2,3}Z",[trim]))),
<<"The AZ">> = iolist_to_binary(join(re:split("The AZ","A\\x0{2,3}Z",[{parts,
2}]))),
<<"The AZ">> = iolist_to_binary(join(re:split("The AZ","A\\x0{2,3}Z",[]))),
<<"An AZ">> = iolist_to_binary(join(re:split("An AZ","A\\x0{2,3}Z",[trim]))),
<<"An AZ">> = iolist_to_binary(join(re:split("An AZ","A\\x0{2,3}Z",[{parts,
2}]))),
<<"An AZ">> = iolist_to_binary(join(re:split("An AZ","A\\x0{2,3}Z",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","A\\x0{2,3}Z",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","A\\x0{2,3}Z",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","A\\x0{2,3}Z",[]))),
<<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[trim]))),
<<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[{parts,
2}]))),
<<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[]))),
<<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[trim]))),
<<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[{parts,
2}]))),
<<"AZ">> = iolist_to_binary(join(re:split("AZ","A\\x0{2,3}Z",[]))),
<<":cow:bell">> = iolist_to_binary(join(re:split("cowcowbell","^(cow|)\\1(bell)",[trim]))),
<<":cow:bell:">> = iolist_to_binary(join(re:split("cowcowbell","^(cow|)\\1(bell)",[{parts,
2}]))),
<<":cow:bell:">> = iolist_to_binary(join(re:split("cowcowbell","^(cow|)\\1(bell)",[]))),
<<"::bell">> = iolist_to_binary(join(re:split("bell","^(cow|)\\1(bell)",[trim]))),
<<"::bell:">> = iolist_to_binary(join(re:split("bell","^(cow|)\\1(bell)",[{parts,
2}]))),
<<"::bell:">> = iolist_to_binary(join(re:split("bell","^(cow|)\\1(bell)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(cow|)\\1(bell)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(cow|)\\1(bell)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(cow|)\\1(bell)",[]))),
<<"cowbell">> = iolist_to_binary(join(re:split("cowbell","^(cow|)\\1(bell)",[trim]))),
<<"cowbell">> = iolist_to_binary(join(re:split("cowbell","^(cow|)\\1(bell)",[{parts,
2}]))),
<<"cowbell">> = iolist_to_binary(join(re:split("cowbell","^(cow|)\\1(bell)",[]))),
<<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[trim]))),
<<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[{parts,
2}]))),
<<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abc","^\\s",[trim]))),
<<":abc">> = iolist_to_binary(join(re:split("abc","^\\s",[{parts,
2}]))),
<<":abc">> = iolist_to_binary(join(re:split("abc","^\\s",[]))),
<<":abc">> = iolist_to_binary(join(re:split("
abc","^\\s",[trim]))),
<<":abc">> = iolist_to_binary(join(re:split("
abc","^\\s",[{parts,2}]))),
<<":abc">> = iolist_to_binary(join(re:split("
abc","^\\s",[]))),
<<":abc">> = iolist_to_binary(join(re:split("
abc","^\\s",[trim]))),
<<":abc">> = iolist_to_binary(join(re:split("
abc","^\\s",[{parts,
2}]))),
<<":abc">> = iolist_to_binary(join(re:split("
abc","^\\s",[]))),
<<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[trim]))),
<<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[{parts,
2}]))),
<<":abc">> = iolist_to_binary(join(re:split(" abc","^\\s",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\s",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\s",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\s",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^\\s",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^\\s",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^\\s",[]))),
ok.
run4() ->
<<"">> = iolist_to_binary(join(re:split("abc","^a b
c",[extended,trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","^a b
c",[extended,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","^a b
c",[extended]))),
<<":a">> = iolist_to_binary(join(re:split("ab","^(a|)\\1*b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","^(a|)\\1*b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","^(a|)\\1*b",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1*b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1*b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1*b",[]))),
<<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1*b",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1*b",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1*b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1*b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1*b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1*b",[]))),
<<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1*b",[trim]))),
<<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1*b",[{parts,
2}]))),
<<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1*b",[]))),
<<":a">> = iolist_to_binary(join(re:split("aab","^(a|)\\1+b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aab","^(a|)\\1+b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aab","^(a|)\\1+b",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1+b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1+b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1+b",[]))),
<<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1+b",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1+b",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1+b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1+b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1+b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1+b",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1+b",[trim]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1+b",[{parts,
2}]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1+b",[]))),
<<":a">> = iolist_to_binary(join(re:split("ab","^(a|)\\1?b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","^(a|)\\1?b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","^(a|)\\1?b",[]))),
<<":a">> = iolist_to_binary(join(re:split("aab","^(a|)\\1?b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aab","^(a|)\\1?b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aab","^(a|)\\1?b",[]))),
<<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1?b",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1?b",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1?b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1?b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1?b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1?b",[]))),
<<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1?b",[trim]))),
<<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1?b",[{parts,
2}]))),
<<"acb">> = iolist_to_binary(join(re:split("acb","^(a|)\\1?b",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2}b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2}b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2}b",[]))),
<<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2}b",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2}b",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2}b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2}b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2}b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2}b",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2}b",[trim]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2}b",[{parts,
2}]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2}b",[]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2}b",[trim]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2}b",[{parts,
2}]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2}b",[]))),
<<"aaaab">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2}b",[trim]))),
<<"aaaab">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2}b",[{parts,
2}]))),
<<"aaaab">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2}b",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2,3}b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2,3}b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaab","^(a|)\\1{2,3}b",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2,3}b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2,3}b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a|)\\1{2,3}b",[]))),
<<"">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2,3}b",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2,3}b",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a|)\\1{2,3}b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2,3}b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2,3}b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a|)\\1{2,3}b",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2,3}b",[trim]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2,3}b",[{parts,
2}]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a|)\\1{2,3}b",[]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2,3}b",[trim]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2,3}b",[{parts,
2}]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^(a|)\\1{2,3}b",[]))),
<<"aaaaab">> = iolist_to_binary(join(re:split("aaaaab","^(a|)\\1{2,3}b",[trim]))),
<<"aaaaab">> = iolist_to_binary(join(re:split("aaaaab","^(a|)\\1{2,3}b",[{parts,
2}]))),
<<"aaaaab">> = iolist_to_binary(join(re:split("aaaaab","^(a|)\\1{2,3}b",[]))),
<<"">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbbc","ab{1,3}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbbc","ab{1,3}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbbc","ab{1,3}bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbc","ab{1,3}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbc","ab{1,3}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbc","ab{1,3}bc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{1,3}bc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{1,3}bc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{1,3}bc",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","ab{1,3}bc",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","ab{1,3}bc",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","ab{1,3}bc",[]))),
<<"abbbbbc">> = iolist_to_binary(join(re:split("abbbbbc","ab{1,3}bc",[trim]))),
<<"abbbbbc">> = iolist_to_binary(join(re:split("abbbbbc","ab{1,3}bc",[{parts,
2}]))),
<<"abbbbbc">> = iolist_to_binary(join(re:split("abbbbbc","ab{1,3}bc",[]))),
<<":track1:title:Blah blah blah">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[trim]))),
<<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[{parts,
2}]))),
<<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[]))),
<<":track1:title:Blah blah blah">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[caseless,
trim]))),
<<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[caseless,
{parts,
2}]))),
<<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[T ]+(.*)",[caseless]))),
<<":track1:title:Blah blah blah">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[t ]+(.*)",[caseless,
trim]))),
<<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[t ]+(.*)",[caseless,
{parts,
2}]))),
<<":track1:title:Blah blah blah:">> = iolist_to_binary(join(re:split("track1.title:TBlah blah blah","([^.]*)\\.([^:]*):[t ]+(.*)",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-c]+$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-c]+$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-c]+$",[]))),
<<"wxy">> = iolist_to_binary(join(re:split("wxy","^[W-c]+$",[trim]))),
<<"wxy">> = iolist_to_binary(join(re:split("wxy","^[W-c]+$",[{parts,
2}]))),
<<"wxy">> = iolist_to_binary(join(re:split("wxy","^[W-c]+$",[]))),
<<"">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[W-c]+$",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("wxy_^ABC","^[W-c]+$",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("wxy_^ABC","^[W-c]+$",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("wxy_^ABC","^[W-c]+$",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("WXY_^abc","^[\\x3f-\\x5F]+$",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[\\x3f-\\x5F]+$",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("WXY_^abc","^[\\x3f-\\x5F]+$",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("wxy_^ABC","^[\\x3f-\\x5F]+$",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("wxy_^ABC","^[\\x3f-\\x5F]+$",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("wxy_^ABC","^[\\x3f-\\x5F]+$",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("abc","^abc$",[multiline,
trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","^abc$",[multiline,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","^abc$",[multiline]))),
<<"qqq
">> = iolist_to_binary(join(re:split("qqq
abc","^abc$",[multiline,trim]))),
<<"qqq
:">> = iolist_to_binary(join(re:split("qqq
abc","^abc$",[multiline,{parts,2}]))),
<<"qqq
:">> = iolist_to_binary(join(re:split("qqq
abc","^abc$",[multiline]))),
<<":
zzz">> = iolist_to_binary(join(re:split("abc
zzz","^abc$",[multiline,trim]))),
<<":
zzz">> = iolist_to_binary(join(re:split("abc
zzz","^abc$",[multiline,{parts,2}]))),
<<":
zzz">> = iolist_to_binary(join(re:split("abc
zzz","^abc$",[multiline]))),
<<"qqq
:
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","^abc$",[multiline,trim]))),
<<"qqq
:
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","^abc$",[multiline,{parts,2}]))),
<<"qqq
:
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","^abc$",[multiline]))),
<<"">> = iolist_to_binary(join(re:split("abc","^abc$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","^abc$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","^abc$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[]))),
<<"qqq
abc">> = iolist_to_binary(join(re:split("qqq
abc","^abc$",[trim]))),
<<"qqq
abc">> = iolist_to_binary(join(re:split("qqq
abc","^abc$",[{parts,2}]))),
<<"qqq
abc">> = iolist_to_binary(join(re:split("qqq
abc","^abc$",[]))),
<<"abc
zzz">> = iolist_to_binary(join(re:split("abc
zzz","^abc$",[trim]))),
<<"abc
zzz">> = iolist_to_binary(join(re:split("abc
zzz","^abc$",[{parts,2}]))),
<<"abc
zzz">> = iolist_to_binary(join(re:split("abc
zzz","^abc$",[]))),
<<"qqq
abc
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","^abc$",[trim]))),
<<"qqq
abc
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","^abc$",[{parts,2}]))),
<<"qqq
abc
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","^abc$",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline,
trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline]))),
<<"">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline,
trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\Z",[multiline]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\Z",[multiline,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\Z",[multiline,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\Z",[multiline]))),
<<"qqq
abc">> = iolist_to_binary(join(re:split("qqq
abc","\\Aabc\\Z",[multiline,trim]))),
<<"qqq
abc">> = iolist_to_binary(join(re:split("qqq
abc","\\Aabc\\Z",[multiline,{parts,2}]))),
<<"qqq
abc">> = iolist_to_binary(join(re:split("qqq
abc","\\Aabc\\Z",[multiline]))),
<<"abc
zzz">> = iolist_to_binary(join(re:split("abc
zzz","\\Aabc\\Z",[multiline,trim]))),
<<"abc
zzz">> = iolist_to_binary(join(re:split("abc
zzz","\\Aabc\\Z",[multiline,{parts,2}]))),
<<"abc
zzz">> = iolist_to_binary(join(re:split("abc
zzz","\\Aabc\\Z",[multiline]))),
<<"qqq
abc
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","\\Aabc\\Z",[multiline,trim]))),
<<"qqq
abc
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","\\Aabc\\Z",[multiline,{parts,2}]))),
<<"qqq
abc
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","\\Aabc\\Z",[multiline]))),
<<":f">> = iolist_to_binary(join(re:split("abc
def","\\A(.)*\\Z",[dotall,trim]))),
<<":f:">> = iolist_to_binary(join(re:split("abc
def","\\A(.)*\\Z",[dotall,{parts,2}]))),
<<":f:">> = iolist_to_binary(join(re:split("abc
def","\\A(.)*\\Z",[dotall]))),
<<":s">> = iolist_to_binary(join(re:split("*** Failers","\\A(.)*\\Z",[multiline,
trim]))),
<<":s:">> = iolist_to_binary(join(re:split("*** Failers","\\A(.)*\\Z",[multiline,
{parts,
2}]))),
<<":s:">> = iolist_to_binary(join(re:split("*** Failers","\\A(.)*\\Z",[multiline]))),
<<"abc
def">> = iolist_to_binary(join(re:split("abc
def","\\A(.)*\\Z",[multiline,trim]))),
<<"abc
def">> = iolist_to_binary(join(re:split("abc
def","\\A(.)*\\Z",[multiline,{parts,2}]))),
<<"abc
def">> = iolist_to_binary(join(re:split("abc
def","\\A(.)*\\Z",[multiline]))),
<<"::c">> = iolist_to_binary(join(re:split("b::c","(?:b)|(?::+)",[trim]))),
<<":::c">> = iolist_to_binary(join(re:split("b::c","(?:b)|(?::+)",[{parts,
2}]))),
<<"::c">> = iolist_to_binary(join(re:split("b::c","(?:b)|(?::+)",[]))),
<<"c">> = iolist_to_binary(join(re:split("c::b","(?:b)|(?::+)",[trim]))),
<<"c:b">> = iolist_to_binary(join(re:split("c::b","(?:b)|(?::+)",[{parts,
2}]))),
<<"c::">> = iolist_to_binary(join(re:split("c::b","(?:b)|(?::+)",[]))),
<<"">> = iolist_to_binary(join(re:split("az-","[-az]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("az-","[-az]+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("az-","[-az]+",[]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[-az]+",[trim]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[-az]+",[{parts,
2}]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[-az]+",[]))),
<<"b">> = iolist_to_binary(join(re:split("b","[-az]+",[trim]))),
<<"b">> = iolist_to_binary(join(re:split("b","[-az]+",[{parts,
2}]))),
<<"b">> = iolist_to_binary(join(re:split("b","[-az]+",[]))),
ok.
run5() ->
<<"">> = iolist_to_binary(join(re:split("za-","[az-]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("za-","[az-]+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("za-","[az-]+",[]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[az-]+",[trim]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[az-]+",[{parts,
2}]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[az-]+",[]))),
<<"b">> = iolist_to_binary(join(re:split("b","[az-]+",[trim]))),
<<"b">> = iolist_to_binary(join(re:split("b","[az-]+",[{parts,
2}]))),
<<"b">> = iolist_to_binary(join(re:split("b","[az-]+",[]))),
<<"">> = iolist_to_binary(join(re:split("a-z","[a\\-z]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a-z","[a\\-z]+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a-z","[a\\-z]+",[]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[a\\-z]+",[trim]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[a\\-z]+",[{parts,
2}]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[a\\-z]+",[]))),
<<"b">> = iolist_to_binary(join(re:split("b","[a\\-z]+",[trim]))),
<<"b">> = iolist_to_binary(join(re:split("b","[a\\-z]+",[{parts,
2}]))),
<<"b">> = iolist_to_binary(join(re:split("b","[a\\-z]+",[]))),
<<"">> = iolist_to_binary(join(re:split("abcdxyz","[a-z]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcdxyz","[a-z]+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcdxyz","[a-z]+",[]))),
<<"">> = iolist_to_binary(join(re:split("12-34","[\\d-]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("12-34","[\\d-]+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("12-34","[\\d-]+",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-]+",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-]+",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-]+",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-]+",[trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-]+",[{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-]+",[]))),
<<"">> = iolist_to_binary(join(re:split("12-34z","[\\d-z]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("12-34z","[\\d-z]+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("12-34z","[\\d-z]+",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-z]+",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-z]+",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\d-z]+",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-z]+",[trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-z]+",[{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","[\\d-z]+",[]))),
<<": ">> = iolist_to_binary(join(re:split("\\ ","\\x5c",[trim]))),
<<": ">> = iolist_to_binary(join(re:split("\\ ","\\x5c",[{parts,
2}]))),
<<": ">> = iolist_to_binary(join(re:split("\\ ","\\x5c",[]))),
<<"the:oo">> = iolist_to_binary(join(re:split("the Zoo","\\x20Z",[trim]))),
<<"the:oo">> = iolist_to_binary(join(re:split("the Zoo","\\x20Z",[{parts,
2}]))),
<<"the:oo">> = iolist_to_binary(join(re:split("the Zoo","\\x20Z",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\x20Z",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\x20Z",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\x20Z",[]))),
<<"Zulu">> = iolist_to_binary(join(re:split("Zulu","\\x20Z",[trim]))),
<<"Zulu">> = iolist_to_binary(join(re:split("Zulu","\\x20Z",[{parts,
2}]))),
<<"Zulu">> = iolist_to_binary(join(re:split("Zulu","\\x20Z",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[caseless,
trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[caseless,
{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[caseless]))),
<<":ABC">> = iolist_to_binary(join(re:split("ABCabc","(abc)\\1",[caseless,
trim]))),
<<":ABC:">> = iolist_to_binary(join(re:split("ABCabc","(abc)\\1",[caseless,
{parts,
2}]))),
<<":ABC:">> = iolist_to_binary(join(re:split("ABCabc","(abc)\\1",[caseless]))),
<<":abc">> = iolist_to_binary(join(re:split("abcABC","(abc)\\1",[caseless,
trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcABC","(abc)\\1",[caseless,
{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcABC","(abc)\\1",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ab{3cd","ab{3cd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab{3cd","ab{3cd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab{3cd","ab{3cd",[]))),
<<"">> = iolist_to_binary(join(re:split("ab{3,cd","ab{3,cd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab{3,cd","ab{3,cd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab{3,cd","ab{3,cd",[]))),
<<"">> = iolist_to_binary(join(re:split("ab{3,4a}cd","ab{3,4a}cd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab{3,4a}cd","ab{3,4a}cd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab{3,4a}cd","ab{3,4a}cd",[]))),
<<"">> = iolist_to_binary(join(re:split("{4,5a}bc","{4,5a}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("{4,5a}bc","{4,5a}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("{4,5a}bc","{4,5a}bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","abc$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","abc$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","abc$",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","abc$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","abc$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","abc$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[]))),
<<"abc
def">> = iolist_to_binary(join(re:split("abc
def","abc$",[trim]))),
<<"abc
def">> = iolist_to_binary(join(re:split("abc
def","abc$",[{parts,2}]))),
<<"abc
def">> = iolist_to_binary(join(re:split("abc
def","abc$",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abcS","(abc)\\123",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcS","(abc)\\123",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcS","(abc)\\123",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abc","(abc)\\223",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc","(abc)\\223",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc","(abc)\\223",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abcÓ","(abc)\\323",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcÓ","(abc)\\323",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcÓ","(abc)\\323",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc@","(abc)\\100",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1000",[]))),
<<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[trim]))),
<<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[{parts,
2}]))),
<<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[]))),
<<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[trim]))),
<<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[{parts,
2}]))),
<<"abc81">> = iolist_to_binary(join(re:split("abc81","abc\\81",[]))),
<<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[trim]))),
<<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[{parts,
2}]))),
<<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[]))),
<<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[trim]))),
<<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[{parts,
2}]))),
<<"abc91">> = iolist_to_binary(join(re:split("abc91","abc\\91",[]))),
ok.
run6() ->
<<":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]))),
<<":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}]))),
<<":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",[]))),
<<":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]))),
<<":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}]))),
<<":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",[]))),
<<"">> = iolist_to_binary(join(re:split("abidef","ab\\idef",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abidef","ab\\idef",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abidef","ab\\idef",[]))),
<<"">> = iolist_to_binary(join(re:split("bc","a{0}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("bc","a{0}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("bc","a{0}bc",[]))),
<<"">> = iolist_to_binary(join(re:split("xyz","(a|(bc)){0,0}?xyz",[trim]))),
<<":::">> = iolist_to_binary(join(re:split("xyz","(a|(bc)){0,0}?xyz",[{parts,
2}]))),
<<":::">> = iolist_to_binary(join(re:split("xyz","(a|(bc)){0,0}?xyz",[]))),
<<"">> = iolist_to_binary(join(re:split("abcde","abc[\\10]de",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcde","abc[\\10]de",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcde","abc[\\10]de",[]))),
<<"">> = iolist_to_binary(join(re:split("abcde","abc[\\1]de",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcde","abc[\\1]de",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcde","abc[\\1]de",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abcde","(abc)[\\1]de",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcde","(abc)[\\1]de",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcde","(abc)[\\1]de",[]))),
<<"">> = iolist_to_binary(join(re:split("a
b","(?s)a.b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a
b","(?s)a.b",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("a
b","(?s)a.b",[]))),
<<":b:a:NOT:cccc:d">> = iolist_to_binary(join(re:split("baNOTccccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))),
<<":b:a:NOT:cccc:d">> = iolist_to_binary(join(re:split("baNOTccccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts,
2}]))),
<<":b:a:NOT:cccc:d">> = iolist_to_binary(join(re:split("baNOTccccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))),
<<":b:a:NOT:ccc:d">> = iolist_to_binary(join(re:split("baNOTcccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))),
<<":b:a:NOT:ccc:d">> = iolist_to_binary(join(re:split("baNOTcccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts,
2}]))),
<<":b:a:NOT:ccc:d">> = iolist_to_binary(join(re:split("baNOTcccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))),
<<":b:a:NO:Tcc:d">> = iolist_to_binary(join(re:split("baNOTccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))),
<<":b:a:NO:Tcc:d">> = iolist_to_binary(join(re:split("baNOTccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts,
2}]))),
<<":b:a:NO:Tcc:d">> = iolist_to_binary(join(re:split("baNOTccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))),
<<":b:a::ccc:d">> = iolist_to_binary(join(re:split("bacccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))),
<<":b:a::ccc:d">> = iolist_to_binary(join(re:split("bacccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts,
2}]))),
<<":b:a::ccc:d">> = iolist_to_binary(join(re:split("bacccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))),
<<":*:*:* Fail:ers">> = iolist_to_binary(join(re:split("*** Failers","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))),
<<":*:*:* Fail:ers:">> = iolist_to_binary(join(re:split("*** Failers","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts,
2}]))),
<<":*:*:* Fail:ers:">> = iolist_to_binary(join(re:split("*** Failers","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))),
<<"anything">> = iolist_to_binary(join(re:split("anything","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))),
<<"anything">> = iolist_to_binary(join(re:split("anything","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts,
2}]))),
<<"anything">> = iolist_to_binary(join(re:split("anything","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))),
<<"bc">> = iolist_to_binary(join(re:split("bc","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))),
<<"bc">> = iolist_to_binary(join(re:split("bc","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts,
2}]))),
<<"bc">> = iolist_to_binary(join(re:split("bc","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))),
<<"baccd">> = iolist_to_binary(join(re:split("baccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[trim]))),
<<"baccd">> = iolist_to_binary(join(re:split("baccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[{parts,
2}]))),
<<"baccd">> = iolist_to_binary(join(re:split("baccd","^([^a])([^\\b])([^c]*)([^d]{3,4})",[]))),
<<"">> = iolist_to_binary(join(re:split("Abc","[^a]",[trim]))),
<<":bc">> = iolist_to_binary(join(re:split("Abc","[^a]",[{parts,
2}]))),
<<":::">> = iolist_to_binary(join(re:split("Abc","[^a]",[]))),
<<"A">> = iolist_to_binary(join(re:split("Abc","[^a]",[caseless,
trim]))),
<<"A:c">> = iolist_to_binary(join(re:split("Abc","[^a]",[caseless,
{parts,
2}]))),
<<"A::">> = iolist_to_binary(join(re:split("Abc","[^a]",[caseless]))),
<<":a">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[trim]))),
<<":aAbc">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[]))),
<<"AAAaA">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[caseless,
trim]))),
<<"AAAaA:">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[caseless,
{parts,
2}]))),
<<"AAAaA:">> = iolist_to_binary(join(re:split("AAAaAbc","[^a]+",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("bbb
ccc","[^a]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("bbb
ccc","[^a]+",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("bbb
ccc","[^a]+",[]))),
<<"ab">> = iolist_to_binary(join(re:split("abc","[^k]$",[trim]))),
<<"ab:">> = iolist_to_binary(join(re:split("abc","[^k]$",[{parts,
2}]))),
<<"ab:">> = iolist_to_binary(join(re:split("abc","[^k]$",[]))),
<<"*** Failer">> = iolist_to_binary(join(re:split("*** Failers","[^k]$",[trim]))),
<<"*** Failer:">> = iolist_to_binary(join(re:split("*** Failers","[^k]$",[{parts,
2}]))),
<<"*** Failer:">> = iolist_to_binary(join(re:split("*** Failers","[^k]$",[]))),
<<"abk">> = iolist_to_binary(join(re:split("abk","[^k]$",[trim]))),
<<"abk">> = iolist_to_binary(join(re:split("abk","[^k]$",[{parts,
2}]))),
<<"abk">> = iolist_to_binary(join(re:split("abk","[^k]$",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","[^k]{2,3}$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","[^k]{2,3}$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","[^k]{2,3}$",[]))),
<<"k">> = iolist_to_binary(join(re:split("kbc","[^k]{2,3}$",[trim]))),
<<"k:">> = iolist_to_binary(join(re:split("kbc","[^k]{2,3}$",[{parts,
2}]))),
<<"k:">> = iolist_to_binary(join(re:split("kbc","[^k]{2,3}$",[]))),
<<"k">> = iolist_to_binary(join(re:split("kabc","[^k]{2,3}$",[trim]))),
<<"k:">> = iolist_to_binary(join(re:split("kabc","[^k]{2,3}$",[{parts,
2}]))),
<<"k:">> = iolist_to_binary(join(re:split("kabc","[^k]{2,3}$",[]))),
<<"*** Fail">> = iolist_to_binary(join(re:split("*** Failers","[^k]{2,3}$",[trim]))),
<<"*** Fail:">> = iolist_to_binary(join(re:split("*** Failers","[^k]{2,3}$",[{parts,
2}]))),
<<"*** Fail:">> = iolist_to_binary(join(re:split("*** Failers","[^k]{2,3}$",[]))),
<<"abk">> = iolist_to_binary(join(re:split("abk","[^k]{2,3}$",[trim]))),
<<"abk">> = iolist_to_binary(join(re:split("abk","[^k]{2,3}$",[{parts,
2}]))),
<<"abk">> = iolist_to_binary(join(re:split("abk","[^k]{2,3}$",[]))),
<<"akb">> = iolist_to_binary(join(re:split("akb","[^k]{2,3}$",[trim]))),
<<"akb">> = iolist_to_binary(join(re:split("akb","[^k]{2,3}$",[{parts,
2}]))),
<<"akb">> = iolist_to_binary(join(re:split("akb","[^k]{2,3}$",[]))),
<<"akk">> = iolist_to_binary(join(re:split("akk","[^k]{2,3}$",[trim]))),
<<"akk">> = iolist_to_binary(join(re:split("akk","[^k]{2,3}$",[{parts,
2}]))),
<<"akk">> = iolist_to_binary(join(re:split("akk","[^k]{2,3}$",[]))),
<<"12345678.b.c.d">> = iolist_to_binary(join(re:split("12345678.b.c.d","^\\d{8,}\\@.+[^k]$",[trim]))),
<<"12345678.b.c.d">> = iolist_to_binary(join(re:split("12345678.b.c.d","^\\d{8,}\\@.+[^k]$",[{parts,
2}]))),
<<"12345678.b.c.d">> = iolist_to_binary(join(re:split("12345678.b.c.d","^\\d{8,}\\@.+[^k]$",[]))),
<<"123456789.y.z">> = iolist_to_binary(join(re:split("123456789.y.z","^\\d{8,}\\@.+[^k]$",[trim]))),
<<"123456789.y.z">> = iolist_to_binary(join(re:split("123456789.y.z","^\\d{8,}\\@.+[^k]$",[{parts,
2}]))),
<<"123456789.y.z">> = iolist_to_binary(join(re:split("123456789.y.z","^\\d{8,}\\@.+[^k]$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8,}\\@.+[^k]$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8,}\\@.+[^k]$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\d{8,}\\@.+[^k]$",[]))),
<<"12345678.y.uk">> = iolist_to_binary(join(re:split("12345678.y.uk","^\\d{8,}\\@.+[^k]$",[trim]))),
<<"12345678.y.uk">> = iolist_to_binary(join(re:split("12345678.y.uk","^\\d{8,}\\@.+[^k]$",[{parts,
2}]))),
<<"12345678.y.uk">> = iolist_to_binary(join(re:split("12345678.y.uk","^\\d{8,}\\@.+[^k]$",[]))),
<<"1234567.b.c.d">> = iolist_to_binary(join(re:split("1234567.b.c.d","^\\d{8,}\\@.+[^k]$",[trim]))),
<<"1234567.b.c.d">> = iolist_to_binary(join(re:split("1234567.b.c.d","^\\d{8,}\\@.+[^k]$",[{parts,
2}]))),
<<"1234567.b.c.d">> = iolist_to_binary(join(re:split("1234567.b.c.d","^\\d{8,}\\@.+[^k]$",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaaaaaaa","(a)\\1{8,}",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaaaa","(a)\\1{8,}",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaaaa","(a)\\1{8,}",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaaaaaaaa","(a)\\1{8,}",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","(a)\\1{8,}",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","(a)\\1{8,}",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a)\\1{8,}",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a)\\1{8,}",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a)\\1{8,}",[]))),
<<"aaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaa","(a)\\1{8,}",[trim]))),
<<"aaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaa","(a)\\1{8,}",[{parts,
2}]))),
<<"aaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaa","(a)\\1{8,}",[]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[trim]))),
<<"aaaa:cd">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[{parts,
2}]))),
<<"aaaa:::">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[]))),
<<"aa:a">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[trim]))),
<<"aa:abcd">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[{parts,
2}]))),
<<"aa:a:::">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[]))),
ok.
run7() ->
<<"aaaa">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[caseless,
trim]))),
<<"aaaa:cd">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[caseless,
{parts,
2}]))),
<<"aaaa:::">> = iolist_to_binary(join(re:split("aaaabcd","[^a]",[caseless]))),
<<"aaAa">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[caseless,
trim]))),
<<"aaAa:cd">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[caseless,
{parts,
2}]))),
<<"aaAa:::">> = iolist_to_binary(join(re:split("aaAabcd","[^a]",[caseless]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[trim]))),
<<"aaaa:cd">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[{parts,
2}]))),
<<"aaaa:::">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[]))),
<<"aa:a">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[trim]))),
<<"aa:abcd">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[{parts,
2}]))),
<<"aa:a:::">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[caseless,
trim]))),
<<"aaaa:cd">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[caseless,
{parts,
2}]))),
<<"aaaa:::">> = iolist_to_binary(join(re:split("aaaabcd","[^az]",[caseless]))),
<<"aaAa">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[caseless,
trim]))),
<<"aaAa:cd">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[caseless,
{parts,
2}]))),
<<"aaAa:::">> = iolist_to_binary(join(re:split("aaAabcd","[^az]",[caseless]))),
<<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,6}?LL",[trim]))),
<<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,6}?LL",[{parts,
2}]))),
<<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,6}?LL",[]))),
<<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,}?LL",[trim]))),
<<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,}?LL",[{parts,
2}]))),
<<"xxxxxxxxxxx:xxxxxxxxx">> = iolist_to_binary(join(re:split("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx","P[^*]TAIRE[^*]{1,}?LL",[]))),
<<"1:.23">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d[1-9]?)\\d+",[trim]))),
<<"1:.23:">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d[1-9]?)\\d+",[{parts,
2}]))),
<<"1:.23:">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d[1-9]?)\\d+",[]))),
<<"1:.875">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d[1-9]?)\\d+",[trim]))),
<<"1:.875:">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d[1-9]?)\\d+",[{parts,
2}]))),
<<"1:.875:">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d[1-9]?)\\d+",[]))),
<<"1:.23">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d[1-9]?)\\d+",[trim]))),
<<"1:.23:">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d[1-9]?)\\d+",[{parts,
2}]))),
<<"1:.23:">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d[1-9]?)\\d+",[]))),
<<"1:.23::0003938">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[trim]))),
<<"1:.23::0003938">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[{parts,
2}]))),
<<"1:.23::0003938">> = iolist_to_binary(join(re:split("1.230003938","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[]))),
<<"1:.875:5:000282">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[trim]))),
<<"1:.875:5:000282">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[{parts,
2}]))),
<<"1:.875:5:000282">> = iolist_to_binary(join(re:split("1.875000282","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[]))),
<<"1.235">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[trim]))),
<<"1.235">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[{parts,
2}]))),
<<"1.235">> = iolist_to_binary(join(re:split("1.235","(\\.\\d\\d((?=0)|\\d(?=\\d)))",[]))),
<<"">> = iolist_to_binary(join(re:split("ab","a(?)b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab","a(?)b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab","a(?)b",[]))),
<<"Food is on the :foo:table">> = iolist_to_binary(join(re:split("Food is on the foo table","\\b(foo)\\s+(\\w+)",[caseless,
trim]))),
<<"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}]))),
<<"Food is on the :foo:table:">> = iolist_to_binary(join(re:split("Food is on the foo table","\\b(foo)\\s+(\\w+)",[caseless]))),
<<"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]))),
<<"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}]))),
<<"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",[]))),
<<"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]))),
<<"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}]))),
<<"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",[]))),
<<":I have 2 numbers: 53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d*)",[trim]))),
<<":I have 2 numbers: 53147::">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d*)",[{parts,
2}]))),
<<":I have 2 numbers: 53147::">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d*)",[]))),
<<":I have 2 numbers: 5314:7">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)",[trim]))),
<<":I have 2 numbers: 5314:7:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)",[{parts,
2}]))),
<<":I have 2 numbers: 5314:7:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)",[]))),
<<":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]))),
<<":I:: have 2 numbers: 53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d*)",[{parts,
2}]))),
<<":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*)",[]))),
<<":I have :2:: numbers: :53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)",[trim]))),
<<":I have :2: numbers: 53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)",[{parts,
2}]))),
<<":I have :2:: numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)",[]))),
<<":I have 2 numbers: 5314:7">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)$",[trim]))),
<<":I have 2 numbers: 5314:7:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)$",[{parts,
2}]))),
<<":I have 2 numbers: 5314:7:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)(\\d+)$",[]))),
<<":I have 2 numbers: :53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)$",[trim]))),
<<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)$",[{parts,
2}]))),
<<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*?)(\\d+)$",[]))),
<<":I have 2 numbers: :53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)\\b(\\d+)$",[trim]))),
<<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)\\b(\\d+)$",[{parts,
2}]))),
<<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*)\\b(\\d+)$",[]))),
<<":I have 2 numbers: :53147">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*\\D)(\\d+)$",[trim]))),
<<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*\\D)(\\d+)$",[{parts,
2}]))),
<<":I have 2 numbers: :53147:">> = iolist_to_binary(join(re:split("I have 2 numbers: 53147","(.*\\D)(\\d+)$",[]))),
ok.
run8() ->
<<":C123">> = iolist_to_binary(join(re:split("ABC123","^\\D*(?!123)",[trim]))),
<<":C123">> = iolist_to_binary(join(re:split("ABC123","^\\D*(?!123)",[{parts,
2}]))),
<<":C123">> = iolist_to_binary(join(re:split("ABC123","^\\D*(?!123)",[]))),
<<":ABC:445">> = iolist_to_binary(join(re:split("ABC445","^(\\D*)(?=\\d)(?!123)",[trim]))),
<<":ABC:445">> = iolist_to_binary(join(re:split("ABC445","^(\\D*)(?=\\d)(?!123)",[{parts,
2}]))),
<<":ABC:445">> = iolist_to_binary(join(re:split("ABC445","^(\\D*)(?=\\d)(?!123)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\D*)(?=\\d)(?!123)",[]))),
<<"ABC123">> = iolist_to_binary(join(re:split("ABC123","^(\\D*)(?=\\d)(?!123)",[trim]))),
<<"ABC123">> = iolist_to_binary(join(re:split("ABC123","^(\\D*)(?=\\d)(?!123)",[{parts,
2}]))),
<<"ABC123">> = iolist_to_binary(join(re:split("ABC123","^(\\D*)(?=\\d)(?!123)",[]))),
<<":789">> = iolist_to_binary(join(re:split("W46]789","^[W-]46]",[trim]))),
<<":789">> = iolist_to_binary(join(re:split("W46]789","^[W-]46]",[{parts,
2}]))),
<<":789">> = iolist_to_binary(join(re:split("W46]789","^[W-]46]",[]))),
<<":789">> = iolist_to_binary(join(re:split("-46]789","^[W-]46]",[trim]))),
<<":789">> = iolist_to_binary(join(re:split("-46]789","^[W-]46]",[{parts,
2}]))),
<<":789">> = iolist_to_binary(join(re:split("-46]789","^[W-]46]",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-]46]",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-]46]",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-]46]",[]))),
<<"Wall">> = iolist_to_binary(join(re:split("Wall","^[W-]46]",[trim]))),
<<"Wall">> = iolist_to_binary(join(re:split("Wall","^[W-]46]",[{parts,
2}]))),
<<"Wall">> = iolist_to_binary(join(re:split("Wall","^[W-]46]",[]))),
<<"Zebra">> = iolist_to_binary(join(re:split("Zebra","^[W-]46]",[trim]))),
<<"Zebra">> = iolist_to_binary(join(re:split("Zebra","^[W-]46]",[{parts,
2}]))),
<<"Zebra">> = iolist_to_binary(join(re:split("Zebra","^[W-]46]",[]))),
<<"42">> = iolist_to_binary(join(re:split("42","^[W-]46]",[trim]))),
<<"42">> = iolist_to_binary(join(re:split("42","^[W-]46]",[{parts,
2}]))),
<<"42">> = iolist_to_binary(join(re:split("42","^[W-]46]",[]))),
<<"[abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-]46]",[trim]))),
<<"[abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-]46]",[{parts,
2}]))),
<<"[abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-]46]",[]))),
<<"]abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-]46]",[trim]))),
<<"]abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-]46]",[{parts,
2}]))),
<<"]abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-]46]",[]))),
<<":46]789">> = iolist_to_binary(join(re:split("W46]789","^[W-\\]46]",[trim]))),
<<":46]789">> = iolist_to_binary(join(re:split("W46]789","^[W-\\]46]",[{parts,
2}]))),
<<":46]789">> = iolist_to_binary(join(re:split("W46]789","^[W-\\]46]",[]))),
<<":all">> = iolist_to_binary(join(re:split("Wall","^[W-\\]46]",[trim]))),
<<":all">> = iolist_to_binary(join(re:split("Wall","^[W-\\]46]",[{parts,
2}]))),
<<":all">> = iolist_to_binary(join(re:split("Wall","^[W-\\]46]",[]))),
<<":ebra">> = iolist_to_binary(join(re:split("Zebra","^[W-\\]46]",[trim]))),
<<":ebra">> = iolist_to_binary(join(re:split("Zebra","^[W-\\]46]",[{parts,
2}]))),
<<":ebra">> = iolist_to_binary(join(re:split("Zebra","^[W-\\]46]",[]))),
<<":ylophone">> = iolist_to_binary(join(re:split("Xylophone","^[W-\\]46]",[trim]))),
<<":ylophone">> = iolist_to_binary(join(re:split("Xylophone","^[W-\\]46]",[{parts,
2}]))),
<<":ylophone">> = iolist_to_binary(join(re:split("Xylophone","^[W-\\]46]",[]))),
<<":2">> = iolist_to_binary(join(re:split("42","^[W-\\]46]",[trim]))),
<<":2">> = iolist_to_binary(join(re:split("42","^[W-\\]46]",[{parts,
2}]))),
<<":2">> = iolist_to_binary(join(re:split("42","^[W-\\]46]",[]))),
<<":abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-\\]46]",[trim]))),
<<":abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-\\]46]",[{parts,
2}]))),
<<":abcd]">> = iolist_to_binary(join(re:split("[abcd]","^[W-\\]46]",[]))),
<<":abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-\\]46]",[trim]))),
<<":abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-\\]46]",[{parts,
2}]))),
<<":abcd[">> = iolist_to_binary(join(re:split("]abcd[","^[W-\\]46]",[]))),
<<":backslash">> = iolist_to_binary(join(re:split("\\backslash","^[W-\\]46]",[trim]))),
<<":backslash">> = iolist_to_binary(join(re:split("\\backslash","^[W-\\]46]",[{parts,
2}]))),
<<":backslash">> = iolist_to_binary(join(re:split("\\backslash","^[W-\\]46]",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-\\]46]",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-\\]46]",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[W-\\]46]",[]))),
<<"-46]789">> = iolist_to_binary(join(re:split("-46]789","^[W-\\]46]",[trim]))),
<<"-46]789">> = iolist_to_binary(join(re:split("-46]789","^[W-\\]46]",[{parts,
2}]))),
<<"-46]789">> = iolist_to_binary(join(re:split("-46]789","^[W-\\]46]",[]))),
<<"well">> = iolist_to_binary(join(re:split("well","^[W-\\]46]",[trim]))),
<<"well">> = iolist_to_binary(join(re:split("well","^[W-\\]46]",[{parts,
2}]))),
<<"well">> = iolist_to_binary(join(re:split("well","^[W-\\]46]",[]))),
<<"">> = 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]))),
<<":">> = 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}]))),
<<":">> = 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",[]))),
<<"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]))),
<<"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}]))),
<<"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",[]))),
<<"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]))),
<<"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}]))),
<<"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",[]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,0}",[trim]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,0}",[{parts,
2}]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,0}",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(a){0,0}",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(a){0,0}",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(a){0,0}",[]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^(a){0,0}",[trim]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^(a){0,0}",[{parts,
2}]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^(a){0,0}",[]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,1}",[trim]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,1}",[{parts,
2}]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,1}",[]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,1}",[trim]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,1}",[{parts,
2}]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,1}",[]))),
<<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){0,1}",[trim]))),
<<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){0,1}",[{parts,
2}]))),
<<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){0,1}",[]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,2}",[trim]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,2}",[{parts,
2}]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,2}",[]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,2}",[trim]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,2}",[{parts,
2}]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,2}",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,2}",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,2}",[{parts,
2}]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,2}",[]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,3}",[trim]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,3}",[{parts,
2}]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,3}",[]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,3}",[trim]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,3}",[{parts,
2}]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,3}",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,3}",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,3}",[{parts,
2}]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,3}",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaa","^(a){0,3}",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){0,3}",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){0,3}",[]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,}",[trim]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,}",[{parts,
2}]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){0,}",[]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,}",[trim]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,}",[{parts,
2}]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){0,}",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,}",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,}",[{parts,
2}]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){0,}",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaa","^(a){0,}",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){0,}",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){0,}",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){0,}",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){0,}",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){0,}",[]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,1}",[trim]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,1}",[{parts,
2}]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,1}",[]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,1}",[trim]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,1}",[{parts,
2}]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,1}",[]))),
<<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){1,1}",[trim]))),
<<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){1,1}",[{parts,
2}]))),
<<":a:ab">> = iolist_to_binary(join(re:split("aab","^(a){1,1}",[]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,2}",[trim]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,2}",[{parts,
2}]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,2}",[]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,2}",[trim]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,2}",[{parts,
2}]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,2}",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,2}",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,2}",[{parts,
2}]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,2}",[]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,3}",[trim]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,3}",[{parts,
2}]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,3}",[]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,3}",[trim]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,3}",[{parts,
2}]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,3}",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,3}",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,3}",[{parts,
2}]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,3}",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaa","^(a){1,3}",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){1,3}",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){1,3}",[]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,}",[trim]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,}",[{parts,
2}]))),
<<"bcd">> = iolist_to_binary(join(re:split("bcd","^(a){1,}",[]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,}",[trim]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,}",[{parts,
2}]))),
<<":a:bc">> = iolist_to_binary(join(re:split("abc","^(a){1,}",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,}",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,}",[{parts,
2}]))),
<<":a:b">> = iolist_to_binary(join(re:split("aab","^(a){1,}",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaa","^(a){1,}",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){1,}",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaa","^(a){1,}",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){1,}",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){1,}",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a){1,}",[]))),
<<"borfle
:
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[trim]))),
<<"borfle
:
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[{parts,2}]))),
<<"borfle
:
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[]))),
<<"borfle
:
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".{0,}\\.gif",[trim]))),
<<"borfle
:
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".{0,}\\.gif",[{parts,2}]))),
<<"borfle
:
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".{0,}\\.gif",[]))),
<<"borfle
:
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[multiline,trim]))),
<<"borfle
:
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[multiline,{parts,2}]))),
<<"borfle
:
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[multiline]))),
<<":
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[dotall,trim]))),
<<":
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[dotall,{parts,2}]))),
<<":
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[dotall]))),
ok.
run9() ->
<<":
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[multiline,dotall,trim]))),
<<":
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[multiline,dotall,{parts,2}]))),
<<":
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*\\.gif",[multiline,dotall]))),
<<"borfle
bib.gif
">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[trim]))),
<<"borfle
bib.gif
:">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[{parts,2}]))),
<<"borfle
bib.gif
:">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[]))),
<<":
:
">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,trim]))),
<<":
bib.gif
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,{parts,2}]))),
<<":
:
:">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline]))),
<<"">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[dotall,trim]))),
<<":">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[dotall,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[dotall]))),
<<"">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,dotall,trim]))),
<<":">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,dotall,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,dotall]))),
<<"borfle
bib.gif
">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[trim]))),
<<"borfle
bib.gif
:">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[{parts,2}]))),
<<"borfle
bib.gif
:">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[]))),
<<":
:
">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,trim]))),
<<":
bib.gif
no">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,{parts,2}]))),
<<":
:
:">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline]))),
<<"">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[dotall,trim]))),
<<":">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[dotall,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[dotall]))),
<<"">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,dotall,trim]))),
<<":">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,dotall,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("borfle
bib.gif
no",".*$",[multiline,dotall]))),
<<"abcde
:1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[trim]))),
<<"abcde
:1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[{parts,2}]))),
<<"abcde
:1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[trim]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[{parts,
2}]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[trim]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[{parts,2}]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[]))),
<<"abcde
:1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[multiline,trim]))),
<<"abcde
:1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[multiline,{parts,2}]))),
<<"abcde
:1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[multiline]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline,
trim]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline,
{parts,
2}]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline]))),
<<"abcde
:B:ar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[multiline,trim]))),
<<"abcde
:B:ar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[multiline,{parts,2}]))),
<<"abcde
:B:ar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[multiline]))),
<<":abcde
1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[dotall,trim]))),
<<":abcde
1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[dotall,{parts,2}]))),
<<":abcde
1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[dotall]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[dotall,
trim]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[dotall,
{parts,
2}]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[dotall]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[dotall,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[dotall,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(.*X|^B)",[dotall]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[dotall,trim]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[dotall,{parts,2}]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[dotall]))),
<<":abcde
1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[multiline,dotall,trim]))),
<<":abcde
1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[multiline,dotall,{parts,2}]))),
<<":abcde
1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(.*X|^B)",[multiline,dotall]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline,
dotall,
trim]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline,
dotall,
{parts,
2}]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(.*X|^B)",[multiline,
dotall]))),
<<"abcde
:B:ar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[multiline,dotall,trim]))),
<<"abcde
:B:ar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[multiline,dotall,{parts,2}]))),
<<"abcde
:B:ar">> = iolist_to_binary(join(re:split("abcde
Bar","(.*X|^B)",[multiline,dotall]))),
<<":abcde
1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(?s)(.*X|^B)",[trim]))),
<<":abcde
1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(?s)(.*X|^B)",[{parts,2}]))),
<<":abcde
1234X:yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(?s)(.*X|^B)",[]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s)(.*X|^B)",[trim]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s)(.*X|^B)",[{parts,
2}]))),
<<":B:arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s)(.*X|^B)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s)(.*X|^B)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s)(.*X|^B)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s)(.*X|^B)",[]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(?s)(.*X|^B)",[trim]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(?s)(.*X|^B)",[{parts,2}]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(?s)(.*X|^B)",[]))),
<<":yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(?s:.*X|^B)",[trim]))),
<<":yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(?s:.*X|^B)",[{parts,2}]))),
<<":yz">> = iolist_to_binary(join(re:split("abcde
1234Xyz","(?s:.*X|^B)",[]))),
<<":arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s:.*X|^B)",[trim]))),
<<":arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s:.*X|^B)",[{parts,
2}]))),
<<":arFoo">> = iolist_to_binary(join(re:split("BarFoo","(?s:.*X|^B)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s:.*X|^B)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s:.*X|^B)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s:.*X|^B)",[]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(?s:.*X|^B)",[trim]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(?s:.*X|^B)",[{parts,2}]))),
<<"abcde
Bar">> = iolist_to_binary(join(re:split("abcde
Bar","(?s:.*X|^B)",[]))),
<<"**** Failers">> = iolist_to_binary(join(re:split("**** Failers","^.*B",[trim]))),
<<"**** Failers">> = iolist_to_binary(join(re:split("**** Failers","^.*B",[{parts,
2}]))),
<<"**** Failers">> = iolist_to_binary(join(re:split("**** Failers","^.*B",[]))),
<<"abc
B">> = iolist_to_binary(join(re:split("abc
B","^.*B",[trim]))),
<<"abc
B">> = iolist_to_binary(join(re:split("abc
B","^.*B",[{parts,2}]))),
<<"abc
B">> = iolist_to_binary(join(re:split("abc
B","^.*B",[]))),
<<"">> = iolist_to_binary(join(re:split("abc
B","(?s)^.*B",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc
B","(?s)^.*B",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("abc
B","(?s)^.*B",[]))),
<<"abc
">> = iolist_to_binary(join(re:split("abc
B","(?m)^.*B",[trim]))),
<<"abc
:">> = iolist_to_binary(join(re:split("abc
B","(?m)^.*B",[{parts,2}]))),
<<"abc
:">> = iolist_to_binary(join(re:split("abc
B","(?m)^.*B",[]))),
<<"">> = iolist_to_binary(join(re:split("abc
B","(?ms)^.*B",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc
B","(?ms)^.*B",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("abc
B","(?ms)^.*B",[]))),
<<"abc
">> = iolist_to_binary(join(re:split("abc
B","(?ms)^B",[trim]))),
<<"abc
:">> = iolist_to_binary(join(re:split("abc
B","(?ms)^B",[{parts,2}]))),
<<"abc
:">> = iolist_to_binary(join(re:split("abc
B","(?ms)^B",[]))),
ok.
run10() ->
<<"">> = iolist_to_binary(join(re:split("B","(?s)B$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("B","(?s)B$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("B","(?s)B$",[]))),
<<"">> = 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]))),
<<":">> = 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}]))),
<<":">> = 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]",[]))),
<<"">> = iolist_to_binary(join(re:split("123456654321","^\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d",[trim]))),
<<":">> = iolist_to_binary(join(re:split("123456654321","^\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("123456654321","^\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d",[]))),
<<"">> = iolist_to_binary(join(re:split("123456654321","^[\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("123456654321","^[\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("123456654321","^[\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d][\\d]",[]))),
<<"">> = iolist_to_binary(join(re:split("abcabcabcabc","^[abc]{12}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcabcabcabc","^[abc]{12}",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcabcabcabc","^[abc]{12}",[]))),
<<"">> = iolist_to_binary(join(re:split("abcabcabcabc","^[a-c]{12}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcabcabcabc","^[a-c]{12}",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcabcabcabc","^[a-c]{12}",[]))),
<<":c">> = iolist_to_binary(join(re:split("abcabcabcabc","^(a|b|c){12}",[trim]))),
<<":c:">> = iolist_to_binary(join(re:split("abcabcabcabc","^(a|b|c){12}",[{parts,
2}]))),
<<":c:">> = iolist_to_binary(join(re:split("abcabcabcabc","^(a|b|c){12}",[]))),
<<"">> = iolist_to_binary(join(re:split("n","^[abcdefghijklmnopqrstuvwxy0123456789]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("n","^[abcdefghijklmnopqrstuvwxy0123456789]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("n","^[abcdefghijklmnopqrstuvwxy0123456789]",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[abcdefghijklmnopqrstuvwxy0123456789]",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[abcdefghijklmnopqrstuvwxy0123456789]",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[abcdefghijklmnopqrstuvwxy0123456789]",[]))),
<<"z">> = iolist_to_binary(join(re:split("z","^[abcdefghijklmnopqrstuvwxy0123456789]",[trim]))),
<<"z">> = iolist_to_binary(join(re:split("z","^[abcdefghijklmnopqrstuvwxy0123456789]",[{parts,
2}]))),
<<"z">> = iolist_to_binary(join(re:split("z","^[abcdefghijklmnopqrstuvwxy0123456789]",[]))),
<<"">> = iolist_to_binary(join(re:split("abcd","abcde{0,0}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcd","abcde{0,0}",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcd","abcde{0,0}",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abcde{0,0}",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abcde{0,0}",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abcde{0,0}",[]))),
<<"abce">> = iolist_to_binary(join(re:split("abce","abcde{0,0}",[trim]))),
<<"abce">> = iolist_to_binary(join(re:split("abce","abcde{0,0}",[{parts,
2}]))),
<<"abce">> = iolist_to_binary(join(re:split("abce","abcde{0,0}",[]))),
<<"">> = iolist_to_binary(join(re:split("abe","ab[cd]{0,0}e",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abe","ab[cd]{0,0}e",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abe","ab[cd]{0,0}e",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab[cd]{0,0}e",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab[cd]{0,0}e",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab[cd]{0,0}e",[]))),
<<"abcde">> = iolist_to_binary(join(re:split("abcde","ab[cd]{0,0}e",[trim]))),
<<"abcde">> = iolist_to_binary(join(re:split("abcde","ab[cd]{0,0}e",[{parts,
2}]))),
<<"abcde">> = iolist_to_binary(join(re:split("abcde","ab[cd]{0,0}e",[]))),
<<"">> = iolist_to_binary(join(re:split("abd","ab(c){0,0}d",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("abd","ab(c){0,0}d",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("abd","ab(c){0,0}d",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab(c){0,0}d",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab(c){0,0}d",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab(c){0,0}d",[]))),
<<"abcd">> = iolist_to_binary(join(re:split("abcd","ab(c){0,0}d",[trim]))),
<<"abcd">> = iolist_to_binary(join(re:split("abcd","ab(c){0,0}d",[{parts,
2}]))),
<<"abcd">> = iolist_to_binary(join(re:split("abcd","ab(c){0,0}d",[]))),
<<"">> = iolist_to_binary(join(re:split("a","a(b*)",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","a(b*)",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","a(b*)",[]))),
<<":b">> = iolist_to_binary(join(re:split("ab","a(b*)",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","a(b*)",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","a(b*)",[]))),
<<":bbbb">> = iolist_to_binary(join(re:split("abbbb","a(b*)",[trim]))),
<<":bbbb:">> = iolist_to_binary(join(re:split("abbbb","a(b*)",[{parts,
2}]))),
<<":bbbb:">> = iolist_to_binary(join(re:split("abbbb","a(b*)",[]))),
<<"*** F::ilers">> = iolist_to_binary(join(re:split("*** Failers","a(b*)",[trim]))),
<<"*** F::ilers">> = iolist_to_binary(join(re:split("*** Failers","a(b*)",[{parts,
2}]))),
<<"*** F::ilers">> = iolist_to_binary(join(re:split("*** Failers","a(b*)",[]))),
<<"bbbbb">> = iolist_to_binary(join(re:split("bbbbb","a(b*)",[trim]))),
<<"bbbbb">> = iolist_to_binary(join(re:split("bbbbb","a(b*)",[{parts,
2}]))),
<<"bbbbb">> = iolist_to_binary(join(re:split("bbbbb","a(b*)",[]))),
<<"">> = iolist_to_binary(join(re:split("abe","ab\\d{0}e",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abe","ab\\d{0}e",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abe","ab\\d{0}e",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab\\d{0}e",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab\\d{0}e",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab\\d{0}e",[]))),
<<"ab1e">> = iolist_to_binary(join(re:split("ab1e","ab\\d{0}e",[trim]))),
<<"ab1e">> = iolist_to_binary(join(re:split("ab1e","ab\\d{0}e",[{parts,
2}]))),
<<"ab1e">> = iolist_to_binary(join(re:split("ab1e","ab\\d{0}e",[]))),
<<"the :quick: brown fox">> = iolist_to_binary(join(re:split("the \"quick\" brown fox","\"([^\\\\\"]+|\\\\.)*\"",[trim]))),
<<"the :quick: brown fox">> = iolist_to_binary(join(re:split("the \"quick\" brown fox","\"([^\\\\\"]+|\\\\.)*\"",[{parts,
2}]))),
<<"the :quick: brown fox">> = iolist_to_binary(join(re:split("the \"quick\" brown fox","\"([^\\\\\"]+|\\\\.)*\"",[]))),
<<": brown fox">> = iolist_to_binary(join(re:split("\"the \\\"quick\\\" brown fox\"","\"([^\\\\\"]+|\\\\.)*\"",[trim]))),
<<": brown fox:">> = iolist_to_binary(join(re:split("\"the \\\"quick\\\" brown fox\"","\"([^\\\\\"]+|\\\\.)*\"",[{parts,
2}]))),
<<": brown fox:">> = iolist_to_binary(join(re:split("\"the \\\"quick\\\" brown fox\"","\"([^\\\\\"]+|\\\\.)*\"",[]))),
<<"a:b:c">> = iolist_to_binary(join(re:split("abc","",[trim]))),
<<"a:bc">> = iolist_to_binary(join(re:split("abc","",[{parts,
2}]))),
<<"a:b:c:">> = iolist_to_binary(join(re:split("abc","",[]))),
<<"">> = iolist_to_binary(join(re:split("acb","a[^a]b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("acb","a[^a]b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("acb","a[^a]b",[]))),
<<"">> = iolist_to_binary(join(re:split("a
b","a[^a]b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a
b","a[^a]b",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("a
b","a[^a]b",[]))),
<<"">> = iolist_to_binary(join(re:split("acb","a.b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("acb","a.b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("acb","a.b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.b",[]))),
<<"a
b">> = iolist_to_binary(join(re:split("a
b","a.b",[trim]))),
<<"a
b">> = iolist_to_binary(join(re:split("a
b","a.b",[{parts,2}]))),
<<"a
b">> = iolist_to_binary(join(re:split("a
b","a.b",[]))),
<<"">> = iolist_to_binary(join(re:split("acb","a[^a]b",[dotall,
trim]))),
<<":">> = iolist_to_binary(join(re:split("acb","a[^a]b",[dotall,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("acb","a[^a]b",[dotall]))),
<<"">> = iolist_to_binary(join(re:split("a
b","a[^a]b",[dotall,trim]))),
<<":">> = iolist_to_binary(join(re:split("a
b","a[^a]b",[dotall,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("a
b","a[^a]b",[dotall]))),
<<"">> = iolist_to_binary(join(re:split("acb","a.b",[dotall,
trim]))),
<<":">> = iolist_to_binary(join(re:split("acb","a.b",[dotall,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("acb","a.b",[dotall]))),
<<"">> = iolist_to_binary(join(re:split("a
b","a.b",[dotall,trim]))),
<<":">> = iolist_to_binary(join(re:split("a
b","a.b",[dotall,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("a
b","a.b",[dotall]))),
ok.
run11() ->
<<":a">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bac","^(b+?|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+?|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbbac","^(b+?|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbac","^(b+?|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbbbac","^(b+?|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbac","^(b+?|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbbbbac","^(b+?|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbbac","^(b+?|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbbac","^(b+?|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bac","^(b+|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbac","^(b+|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbbac","^(b+|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbac","^(b+|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbac","^(b+|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbbbac","^(b+|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbac","^(b+|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbac","^(b+|a){1,2}?c",[]))),
<<":a">> = iolist_to_binary(join(re:split("bbbbbac","^(b+|a){1,2}?c",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbbac","^(b+|a){1,2}?c",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("bbbbbac","^(b+|a){1,2}?c",[]))),
<<"x
b">> = iolist_to_binary(join(re:split("x
b","(?!\\A)x",[multiline,trim]))),
<<"x
b">> = iolist_to_binary(join(re:split("x
b","(?!\\A)x",[multiline,{parts,2}]))),
<<"x
b">> = iolist_to_binary(join(re:split("x
b","(?!\\A)x",[multiline]))),
<<"a">> = iolist_to_binary(join(re:split("ax","(?!\\A)x",[multiline,
trim]))),
<<"a:">> = iolist_to_binary(join(re:split("ax","(?!\\A)x",[multiline,
{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("ax","(?!\\A)x",[multiline]))),
<<"{ab}">> = iolist_to_binary(join(re:split("{ab}","\\x0{ab}",[trim]))),
<<"{ab}">> = iolist_to_binary(join(re:split("{ab}","\\x0{ab}",[{parts,
2}]))),
<<"{ab}">> = iolist_to_binary(join(re:split("{ab}","\\x0{ab}",[]))),
<<"">> = iolist_to_binary(join(re:split("CD","(A|B)*?CD",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("CD","(A|B)*?CD",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("CD","(A|B)*?CD",[]))),
<<"">> = iolist_to_binary(join(re:split("CD","(A|B)*CD",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("CD","(A|B)*CD",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("CD","(A|B)*CD",[]))),
<<":AB:AB">> = iolist_to_binary(join(re:split("ABABAB","(AB)*?\\1",[trim]))),
<<":AB:AB">> = iolist_to_binary(join(re:split("ABABAB","(AB)*?\\1",[{parts,
2}]))),
<<":AB:AB">> = iolist_to_binary(join(re:split("ABABAB","(AB)*?\\1",[]))),
<<":AB">> = iolist_to_binary(join(re:split("ABABAB","(AB)*\\1",[trim]))),
<<":AB:">> = iolist_to_binary(join(re:split("ABABAB","(AB)*\\1",[{parts,
2}]))),
<<":AB:">> = iolist_to_binary(join(re:split("ABABAB","(AB)*\\1",[]))),
<<"">> = iolist_to_binary(join(re:split("foo","(?<!bar)foo",[trim]))),
<<":">> = iolist_to_binary(join(re:split("foo","(?<!bar)foo",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("foo","(?<!bar)foo",[]))),
<<"cat:d">> = iolist_to_binary(join(re:split("catfood","(?<!bar)foo",[trim]))),
<<"cat:d">> = iolist_to_binary(join(re:split("catfood","(?<!bar)foo",[{parts,
2}]))),
<<"cat:d">> = iolist_to_binary(join(re:split("catfood","(?<!bar)foo",[]))),
<<"ar:tle">> = iolist_to_binary(join(re:split("arfootle","(?<!bar)foo",[trim]))),
<<"ar:tle">> = iolist_to_binary(join(re:split("arfootle","(?<!bar)foo",[{parts,
2}]))),
<<"ar:tle">> = iolist_to_binary(join(re:split("arfootle","(?<!bar)foo",[]))),
<<"r:sh">> = iolist_to_binary(join(re:split("rfoosh","(?<!bar)foo",[trim]))),
<<"r:sh">> = iolist_to_binary(join(re:split("rfoosh","(?<!bar)foo",[{parts,
2}]))),
<<"r:sh">> = iolist_to_binary(join(re:split("rfoosh","(?<!bar)foo",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<!bar)foo",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<!bar)foo",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<!bar)foo",[]))),
<<"barfoo">> = iolist_to_binary(join(re:split("barfoo","(?<!bar)foo",[trim]))),
<<"barfoo">> = iolist_to_binary(join(re:split("barfoo","(?<!bar)foo",[{parts,
2}]))),
<<"barfoo">> = iolist_to_binary(join(re:split("barfoo","(?<!bar)foo",[]))),
<<"towbarfoo">> = iolist_to_binary(join(re:split("towbarfoo","(?<!bar)foo",[trim]))),
<<"towbarfoo">> = iolist_to_binary(join(re:split("towbarfoo","(?<!bar)foo",[{parts,
2}]))),
<<"towbarfoo">> = iolist_to_binary(join(re:split("towbarfoo","(?<!bar)foo",[]))),
<<":d">> = iolist_to_binary(join(re:split("catfood","\\w{3}(?<!bar)foo",[trim]))),
<<":d">> = iolist_to_binary(join(re:split("catfood","\\w{3}(?<!bar)foo",[{parts,
2}]))),
<<":d">> = iolist_to_binary(join(re:split("catfood","\\w{3}(?<!bar)foo",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\w{3}(?<!bar)foo",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\w{3}(?<!bar)foo",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\w{3}(?<!bar)foo",[]))),
<<"foo">> = iolist_to_binary(join(re:split("foo","\\w{3}(?<!bar)foo",[trim]))),
<<"foo">> = iolist_to_binary(join(re:split("foo","\\w{3}(?<!bar)foo",[{parts,
2}]))),
<<"foo">> = iolist_to_binary(join(re:split("foo","\\w{3}(?<!bar)foo",[]))),
<<"barfoo">> = iolist_to_binary(join(re:split("barfoo","\\w{3}(?<!bar)foo",[trim]))),
<<"barfoo">> = iolist_to_binary(join(re:split("barfoo","\\w{3}(?<!bar)foo",[{parts,
2}]))),
<<"barfoo">> = iolist_to_binary(join(re:split("barfoo","\\w{3}(?<!bar)foo",[]))),
<<"towbarfoo">> = iolist_to_binary(join(re:split("towbarfoo","\\w{3}(?<!bar)foo",[trim]))),
<<"towbarfoo">> = iolist_to_binary(join(re:split("towbarfoo","\\w{3}(?<!bar)foo",[{parts,
2}]))),
<<"towbarfoo">> = iolist_to_binary(join(re:split("towbarfoo","\\w{3}(?<!bar)foo",[]))),
<<"fooa:foo">> = iolist_to_binary(join(re:split("fooabar","(?<=(foo)a)bar",[trim]))),
<<"fooa:foo:">> = iolist_to_binary(join(re:split("fooabar","(?<=(foo)a)bar",[{parts,
2}]))),
<<"fooa:foo:">> = iolist_to_binary(join(re:split("fooabar","(?<=(foo)a)bar",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo)a)bar",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo)a)bar",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo)a)bar",[]))),
<<"bar">> = iolist_to_binary(join(re:split("bar","(?<=(foo)a)bar",[trim]))),
<<"bar">> = iolist_to_binary(join(re:split("bar","(?<=(foo)a)bar",[{parts,
2}]))),
<<"bar">> = iolist_to_binary(join(re:split("bar","(?<=(foo)a)bar",[]))),
<<"foobbar">> = iolist_to_binary(join(re:split("foobbar","(?<=(foo)a)bar",[trim]))),
<<"foobbar">> = iolist_to_binary(join(re:split("foobbar","(?<=(foo)a)bar",[{parts,
2}]))),
<<"foobbar">> = iolist_to_binary(join(re:split("foobbar","(?<=(foo)a)bar",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline,
trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\z",[multiline,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\z",[multiline,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc\\z",[multiline]))),
<<"">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline,
trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc\\z",[multiline]))),
<<"qqq
abc">> = iolist_to_binary(join(re:split("qqq
abc","\\Aabc\\z",[multiline,trim]))),
<<"qqq
abc">> = iolist_to_binary(join(re:split("qqq
abc","\\Aabc\\z",[multiline,{parts,2}]))),
<<"qqq
abc">> = iolist_to_binary(join(re:split("qqq
abc","\\Aabc\\z",[multiline]))),
<<"abc
zzz">> = iolist_to_binary(join(re:split("abc
zzz","\\Aabc\\z",[multiline,trim]))),
<<"abc
zzz">> = iolist_to_binary(join(re:split("abc
zzz","\\Aabc\\z",[multiline,{parts,2}]))),
<<"abc
zzz">> = iolist_to_binary(join(re:split("abc
zzz","\\Aabc\\z",[multiline]))),
<<"qqq
abc
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","\\Aabc\\z",[multiline,trim]))),
<<"qqq
abc
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","\\Aabc\\z",[multiline,{parts,2}]))),
<<"qqq
abc
zzz">> = iolist_to_binary(join(re:split("qqq
abc
zzz","\\Aabc\\z",[multiline]))),
<<"1:.23">> = iolist_to_binary(join(re:split("1.230003938","(?>(\\.\\d\\d[1-9]?))\\d+",[trim]))),
<<"1:.23:">> = iolist_to_binary(join(re:split("1.230003938","(?>(\\.\\d\\d[1-9]?))\\d+",[{parts,
2}]))),
<<"1:.23:">> = iolist_to_binary(join(re:split("1.230003938","(?>(\\.\\d\\d[1-9]?))\\d+",[]))),
<<"1:.875">> = iolist_to_binary(join(re:split("1.875000282","(?>(\\.\\d\\d[1-9]?))\\d+",[trim]))),
<<"1:.875:">> = iolist_to_binary(join(re:split("1.875000282","(?>(\\.\\d\\d[1-9]?))\\d+",[{parts,
2}]))),
<<"1:.875:">> = iolist_to_binary(join(re:split("1.875000282","(?>(\\.\\d\\d[1-9]?))\\d+",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>(\\.\\d\\d[1-9]?))\\d+",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>(\\.\\d\\d[1-9]?))\\d+",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>(\\.\\d\\d[1-9]?))\\d+",[]))),
<<"1.235">> = iolist_to_binary(join(re:split("1.235","(?>(\\.\\d\\d[1-9]?))\\d+",[trim]))),
<<"1.235">> = iolist_to_binary(join(re:split("1.235","(?>(\\.\\d\\d[1-9]?))\\d+",[{parts,
2}]))),
<<"1.235">> = iolist_to_binary(join(re:split("1.235","(?>(\\.\\d\\d[1-9]?))\\d+",[]))),
<<":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]))),
<<":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}]))),
<<":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+))*$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^((?>\\w+)|(?>\\s+))*$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^((?>\\w+)|(?>\\s+))*$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^((?>\\w+)|(?>\\s+))*$",[]))),
<<"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]))),
<<"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}]))),
<<"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+))*$",[]))),
<<":12345:a">> = iolist_to_binary(join(re:split("12345a","(\\d+)(\\w)",[trim]))),
<<":12345:a:">> = iolist_to_binary(join(re:split("12345a","(\\d+)(\\w)",[{parts,
2}]))),
<<":12345:a:">> = iolist_to_binary(join(re:split("12345a","(\\d+)(\\w)",[]))),
<<":1234:5:+">> = iolist_to_binary(join(re:split("12345+","(\\d+)(\\w)",[trim]))),
<<":1234:5:+">> = iolist_to_binary(join(re:split("12345+","(\\d+)(\\w)",[{parts,
2}]))),
<<":1234:5:+">> = iolist_to_binary(join(re:split("12345+","(\\d+)(\\w)",[]))),
<<":12345:a">> = iolist_to_binary(join(re:split("12345a","((?>\\d+))(\\w)",[trim]))),
<<":12345:a:">> = iolist_to_binary(join(re:split("12345a","((?>\\d+))(\\w)",[{parts,
2}]))),
<<":12345:a:">> = iolist_to_binary(join(re:split("12345a","((?>\\d+))(\\w)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?>\\d+))(\\w)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?>\\d+))(\\w)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?>\\d+))(\\w)",[]))),
<<"12345+">> = iolist_to_binary(join(re:split("12345+","((?>\\d+))(\\w)",[trim]))),
<<"12345+">> = iolist_to_binary(join(re:split("12345+","((?>\\d+))(\\w)",[{parts,
2}]))),
<<"12345+">> = iolist_to_binary(join(re:split("12345+","((?>\\d+))(\\w)",[]))),
<<"">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[]))),
<<":aaab">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[trim]))),
<<":aaab:">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[{parts,
2}]))),
<<":aaab:">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[]))),
ok.
run12() ->
<<":aaa">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[trim]))),
<<":aaa:">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[{parts,
2}]))),
<<":aaa:">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[]))),
<<"aaa:ccc">> = iolist_to_binary(join(re:split("aaabbbccc","(?>b)+",[trim]))),
<<"aaa:ccc">> = iolist_to_binary(join(re:split("aaabbbccc","(?>b)+",[{parts,
2}]))),
<<"aaa:ccc">> = iolist_to_binary(join(re:split("aaabbbccc","(?>b)+",[]))),
<<"::::d">> = iolist_to_binary(join(re:split("aaabbbbccccd","(?>a+|b+|c+)*c",[trim]))),
<<":cccd">> = iolist_to_binary(join(re:split("aaabbbbccccd","(?>a+|b+|c+)*c",[{parts,
2}]))),
<<"::::d">> = iolist_to_binary(join(re:split("aaabbbbccccd","(?>a+|b+|c+)*c",[]))),
<<"((:x">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[trim]))),
<<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[{parts,
2}]))),
<<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[]))),
<<":abc">> = iolist_to_binary(join(re:split("(abc)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("(abc)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("(abc)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[]))),
<<":xyz">> = iolist_to_binary(join(re:split("(abc(def)xyz)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[trim]))),
<<":xyz:">> = iolist_to_binary(join(re:split("(abc(def)xyz)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[{parts,
2}]))),
<<":xyz:">> = iolist_to_binary(join(re:split("(abc(def)xyz)","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[]))),
<<"((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[trim]))),
<<"((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[{parts,
2}]))),
<<"((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","\\(((?>[^()]+)|\\([^()]+\\))+\\)",[]))),
<<"">> = iolist_to_binary(join(re:split("ab","a(?-i)b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ab","a(?-i)b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab","a(?-i)b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("Ab","a(?-i)b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("Ab","a(?-i)b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("Ab","a(?-i)b",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?-i)b",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?-i)b",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?-i)b",[caseless]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","a(?-i)b",[caseless,
trim]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","a(?-i)b",[caseless,
{parts,
2}]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","a(?-i)b",[caseless]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","a(?-i)b",[caseless,
trim]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","a(?-i)b",[caseless,
{parts,
2}]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","a(?-i)b",[caseless]))),
<<":a bc">> = iolist_to_binary(join(re:split("a bcd e","(a (?x)b c)d e",[trim]))),
<<":a bc:">> = iolist_to_binary(join(re:split("a bcd e","(a (?x)b c)d e",[{parts,
2}]))),
<<":a bc:">> = iolist_to_binary(join(re:split("a bcd e","(a (?x)b c)d e",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a (?x)b c)d e",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a (?x)b c)d e",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a (?x)b c)d e",[]))),
<<"a b cd e">> = iolist_to_binary(join(re:split("a b cd e","(a (?x)b c)d e",[trim]))),
<<"a b cd e">> = iolist_to_binary(join(re:split("a b cd e","(a (?x)b c)d e",[{parts,
2}]))),
<<"a b cd e">> = iolist_to_binary(join(re:split("a b cd e","(a (?x)b c)d e",[]))),
<<"abcd e">> = iolist_to_binary(join(re:split("abcd e","(a (?x)b c)d e",[trim]))),
<<"abcd e">> = iolist_to_binary(join(re:split("abcd e","(a (?x)b c)d e",[{parts,
2}]))),
<<"abcd e">> = iolist_to_binary(join(re:split("abcd e","(a (?x)b c)d e",[]))),
<<"a bcde">> = iolist_to_binary(join(re:split("a bcde","(a (?x)b c)d e",[trim]))),
<<"a bcde">> = iolist_to_binary(join(re:split("a bcde","(a (?x)b c)d e",[{parts,
2}]))),
<<"a bcde">> = iolist_to_binary(join(re:split("a bcde","(a (?x)b c)d e",[]))),
<<":a bcde f">> = iolist_to_binary(join(re:split("a bcde f","(a b(?x)c d (?-x)e f)",[trim]))),
<<":a bcde f:">> = iolist_to_binary(join(re:split("a bcde f","(a b(?x)c d (?-x)e f)",[{parts,
2}]))),
<<":a bcde f:">> = iolist_to_binary(join(re:split("a bcde f","(a b(?x)c d (?-x)e f)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a b(?x)c d (?-x)e f)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a b(?x)c d (?-x)e f)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a b(?x)c d (?-x)e f)",[]))),
<<"abcdef">> = iolist_to_binary(join(re:split("abcdef","(a b(?x)c d (?-x)e f)",[trim]))),
<<"abcdef">> = iolist_to_binary(join(re:split("abcdef","(a b(?x)c d (?-x)e f)",[{parts,
2}]))),
<<"abcdef">> = iolist_to_binary(join(re:split("abcdef","(a b(?x)c d (?-x)e f)",[]))),
<<":ab">> = iolist_to_binary(join(re:split("abc","(a(?i)b)c",[trim]))),
<<":ab:">> = iolist_to_binary(join(re:split("abc","(a(?i)b)c",[{parts,
2}]))),
<<":ab:">> = iolist_to_binary(join(re:split("abc","(a(?i)b)c",[]))),
<<":aB">> = iolist_to_binary(join(re:split("aBc","(a(?i)b)c",[trim]))),
<<":aB:">> = iolist_to_binary(join(re:split("aBc","(a(?i)b)c",[{parts,
2}]))),
<<":aB:">> = iolist_to_binary(join(re:split("aBc","(a(?i)b)c",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)b)c",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)b)c",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)b)c",[]))),
<<"abC">> = iolist_to_binary(join(re:split("abC","(a(?i)b)c",[trim]))),
<<"abC">> = iolist_to_binary(join(re:split("abC","(a(?i)b)c",[{parts,
2}]))),
<<"abC">> = iolist_to_binary(join(re:split("abC","(a(?i)b)c",[]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","(a(?i)b)c",[trim]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","(a(?i)b)c",[{parts,
2}]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","(a(?i)b)c",[]))),
<<"Abc">> = iolist_to_binary(join(re:split("Abc","(a(?i)b)c",[trim]))),
<<"Abc">> = iolist_to_binary(join(re:split("Abc","(a(?i)b)c",[{parts,
2}]))),
<<"Abc">> = iolist_to_binary(join(re:split("Abc","(a(?i)b)c",[]))),
<<"ABc">> = iolist_to_binary(join(re:split("ABc","(a(?i)b)c",[trim]))),
<<"ABc">> = iolist_to_binary(join(re:split("ABc","(a(?i)b)c",[{parts,
2}]))),
<<"ABc">> = iolist_to_binary(join(re:split("ABc","(a(?i)b)c",[]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","(a(?i)b)c",[trim]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","(a(?i)b)c",[{parts,
2}]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","(a(?i)b)c",[]))),
<<"AbC">> = iolist_to_binary(join(re:split("AbC","(a(?i)b)c",[trim]))),
<<"AbC">> = iolist_to_binary(join(re:split("AbC","(a(?i)b)c",[{parts,
2}]))),
<<"AbC">> = iolist_to_binary(join(re:split("AbC","(a(?i)b)c",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","a(?i:b)c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","a(?i:b)c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","a(?i:b)c",[]))),
<<"">> = iolist_to_binary(join(re:split("aBc","a(?i:b)c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aBc","a(?i:b)c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aBc","a(?i:b)c",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)c",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)c",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)c",[]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","a(?i:b)c",[trim]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","a(?i:b)c",[{parts,
2}]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","a(?i:b)c",[]))),
<<"abC">> = iolist_to_binary(join(re:split("abC","a(?i:b)c",[trim]))),
<<"abC">> = iolist_to_binary(join(re:split("abC","a(?i:b)c",[{parts,
2}]))),
<<"abC">> = iolist_to_binary(join(re:split("abC","a(?i:b)c",[]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)c",[trim]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)c",[{parts,
2}]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)c",[]))),
<<"">> = iolist_to_binary(join(re:split("aBc","a(?i:b)*c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aBc","a(?i:b)*c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aBc","a(?i:b)*c",[]))),
<<"">> = iolist_to_binary(join(re:split("aBBc","a(?i:b)*c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aBBc","a(?i:b)*c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aBBc","a(?i:b)*c",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)*c",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)*c",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?i:b)*c",[]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)*c",[trim]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)*c",[{parts,
2}]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","a(?i:b)*c",[]))),
<<"aBBC">> = iolist_to_binary(join(re:split("aBBC","a(?i:b)*c",[trim]))),
<<"aBBC">> = iolist_to_binary(join(re:split("aBBC","a(?i:b)*c",[{parts,
2}]))),
<<"aBBC">> = iolist_to_binary(join(re:split("aBBC","a(?i:b)*c",[]))),
<<"">> = iolist_to_binary(join(re:split("abcd","a(?=b(?i)c)\\w\\wd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcd","a(?=b(?i)c)\\w\\wd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcd","a(?=b(?i)c)\\w\\wd",[]))),
<<"">> = iolist_to_binary(join(re:split("abCd","a(?=b(?i)c)\\w\\wd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abCd","a(?=b(?i)c)\\w\\wd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abCd","a(?=b(?i)c)\\w\\wd",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?=b(?i)c)\\w\\wd",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?=b(?i)c)\\w\\wd",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?=b(?i)c)\\w\\wd",[]))),
<<"aBCd">> = iolist_to_binary(join(re:split("aBCd","a(?=b(?i)c)\\w\\wd",[trim]))),
<<"aBCd">> = iolist_to_binary(join(re:split("aBCd","a(?=b(?i)c)\\w\\wd",[{parts,
2}]))),
<<"aBCd">> = iolist_to_binary(join(re:split("aBCd","a(?=b(?i)c)\\w\\wd",[]))),
<<"abcD">> = iolist_to_binary(join(re:split("abcD","a(?=b(?i)c)\\w\\wd",[trim]))),
<<"abcD">> = iolist_to_binary(join(re:split("abcD","a(?=b(?i)c)\\w\\wd",[{parts,
2}]))),
<<"abcD">> = iolist_to_binary(join(re:split("abcD","a(?=b(?i)c)\\w\\wd",[]))),
<<"">> = iolist_to_binary(join(re:split("more than million","(?s-i:more.*than).*million",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("more than million","(?s-i:more.*than).*million",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("more than million","(?s-i:more.*than).*million",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("more than MILLION","(?s-i:more.*than).*million",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("more than MILLION","(?s-i:more.*than).*million",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("more than MILLION","(?s-i:more.*than).*million",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("more
than Million","(?s-i:more.*than).*million",[caseless,trim]))),
<<":">> = iolist_to_binary(join(re:split("more
than Million","(?s-i:more.*than).*million",[caseless,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("more
than Million","(?s-i:more.*than).*million",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s-i:more.*than).*million",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s-i:more.*than).*million",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?s-i:more.*than).*million",[caseless]))),
<<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?s-i:more.*than).*million",[caseless,
trim]))),
<<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?s-i:more.*than).*million",[caseless,
{parts,
2}]))),
<<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?s-i:more.*than).*million",[caseless]))),
<<"more
than
million">> = iolist_to_binary(join(re:split("more
than
million","(?s-i:more.*than).*million",[caseless,trim]))),
<<"more
than
million">> = iolist_to_binary(join(re:split("more
than
million","(?s-i:more.*than).*million",[caseless,{parts,2}]))),
<<"more
than
million">> = iolist_to_binary(join(re:split("more
than
million","(?s-i:more.*than).*million",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("more than million","(?:(?s-i)more.*than).*million",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("more than million","(?:(?s-i)more.*than).*million",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("more than million","(?:(?s-i)more.*than).*million",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("more than MILLION","(?:(?s-i)more.*than).*million",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("more than MILLION","(?:(?s-i)more.*than).*million",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("more than MILLION","(?:(?s-i)more.*than).*million",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("more
than Million","(?:(?s-i)more.*than).*million",[caseless,trim]))),
<<":">> = iolist_to_binary(join(re:split("more
than Million","(?:(?s-i)more.*than).*million",[caseless,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("more
than Million","(?:(?s-i)more.*than).*million",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?s-i)more.*than).*million",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?s-i)more.*than).*million",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?s-i)more.*than).*million",[caseless]))),
<<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?:(?s-i)more.*than).*million",[caseless,
trim]))),
<<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?:(?s-i)more.*than).*million",[caseless,
{parts,
2}]))),
<<"MORE THAN MILLION">> = iolist_to_binary(join(re:split("MORE THAN MILLION","(?:(?s-i)more.*than).*million",[caseless]))),
<<"more
than
million">> = iolist_to_binary(join(re:split("more
than
million","(?:(?s-i)more.*than).*million",[caseless,trim]))),
<<"more
than
million">> = iolist_to_binary(join(re:split("more
than
million","(?:(?s-i)more.*than).*million",[caseless,{parts,2}]))),
<<"more
than
million">> = iolist_to_binary(join(re:split("more
than
million","(?:(?s-i)more.*than).*million",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("abc","(?>a(?i)b+)+c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?>a(?i)b+)+c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?>a(?i)b+)+c",[]))),
<<"">> = iolist_to_binary(join(re:split("aBbc","(?>a(?i)b+)+c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aBbc","(?>a(?i)b+)+c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aBbc","(?>a(?i)b+)+c",[]))),
<<"">> = iolist_to_binary(join(re:split("aBBc","(?>a(?i)b+)+c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aBBc","(?>a(?i)b+)+c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aBBc","(?>a(?i)b+)+c",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>a(?i)b+)+c",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>a(?i)b+)+c",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>a(?i)b+)+c",[]))),
<<"Abc">> = iolist_to_binary(join(re:split("Abc","(?>a(?i)b+)+c",[trim]))),
<<"Abc">> = iolist_to_binary(join(re:split("Abc","(?>a(?i)b+)+c",[{parts,
2}]))),
<<"Abc">> = iolist_to_binary(join(re:split("Abc","(?>a(?i)b+)+c",[]))),
<<"abAb">> = iolist_to_binary(join(re:split("abAb","(?>a(?i)b+)+c",[trim]))),
<<"abAb">> = iolist_to_binary(join(re:split("abAb","(?>a(?i)b+)+c",[{parts,
2}]))),
<<"abAb">> = iolist_to_binary(join(re:split("abAb","(?>a(?i)b+)+c",[]))),
<<"abbC">> = iolist_to_binary(join(re:split("abbC","(?>a(?i)b+)+c",[trim]))),
<<"abbC">> = iolist_to_binary(join(re:split("abbC","(?>a(?i)b+)+c",[{parts,
2}]))),
<<"abbC">> = iolist_to_binary(join(re:split("abbC","(?>a(?i)b+)+c",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","(?=a(?i)b)\\w\\wc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?=a(?i)b)\\w\\wc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?=a(?i)b)\\w\\wc",[]))),
<<"">> = iolist_to_binary(join(re:split("aBc","(?=a(?i)b)\\w\\wc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aBc","(?=a(?i)b)\\w\\wc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aBc","(?=a(?i)b)\\w\\wc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=a(?i)b)\\w\\wc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=a(?i)b)\\w\\wc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?=a(?i)b)\\w\\wc",[]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?=a(?i)b)\\w\\wc",[trim]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?=a(?i)b)\\w\\wc",[{parts,
2}]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?=a(?i)b)\\w\\wc",[]))),
<<"abC">> = iolist_to_binary(join(re:split("abC","(?=a(?i)b)\\w\\wc",[trim]))),
<<"abC">> = iolist_to_binary(join(re:split("abC","(?=a(?i)b)\\w\\wc",[{parts,
2}]))),
<<"abC">> = iolist_to_binary(join(re:split("abC","(?=a(?i)b)\\w\\wc",[]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","(?=a(?i)b)\\w\\wc",[trim]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","(?=a(?i)b)\\w\\wc",[{parts,
2}]))),
<<"aBC">> = iolist_to_binary(join(re:split("aBC","(?=a(?i)b)\\w\\wc",[]))),
<<"ab:xx">> = iolist_to_binary(join(re:split("abxxc","(?<=a(?i)b)(\\w\\w)c",[trim]))),
<<"ab:xx:">> = iolist_to_binary(join(re:split("abxxc","(?<=a(?i)b)(\\w\\w)c",[{parts,
2}]))),
<<"ab:xx:">> = iolist_to_binary(join(re:split("abxxc","(?<=a(?i)b)(\\w\\w)c",[]))),
<<"aB:xx">> = iolist_to_binary(join(re:split("aBxxc","(?<=a(?i)b)(\\w\\w)c",[trim]))),
<<"aB:xx:">> = iolist_to_binary(join(re:split("aBxxc","(?<=a(?i)b)(\\w\\w)c",[{parts,
2}]))),
<<"aB:xx:">> = iolist_to_binary(join(re:split("aBxxc","(?<=a(?i)b)(\\w\\w)c",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a(?i)b)(\\w\\w)c",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a(?i)b)(\\w\\w)c",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a(?i)b)(\\w\\w)c",[]))),
<<"Abxxc">> = iolist_to_binary(join(re:split("Abxxc","(?<=a(?i)b)(\\w\\w)c",[trim]))),
<<"Abxxc">> = iolist_to_binary(join(re:split("Abxxc","(?<=a(?i)b)(\\w\\w)c",[{parts,
2}]))),
<<"Abxxc">> = iolist_to_binary(join(re:split("Abxxc","(?<=a(?i)b)(\\w\\w)c",[]))),
<<"ABxxc">> = iolist_to_binary(join(re:split("ABxxc","(?<=a(?i)b)(\\w\\w)c",[trim]))),
<<"ABxxc">> = iolist_to_binary(join(re:split("ABxxc","(?<=a(?i)b)(\\w\\w)c",[{parts,
2}]))),
<<"ABxxc">> = iolist_to_binary(join(re:split("ABxxc","(?<=a(?i)b)(\\w\\w)c",[]))),
<<"abxxC">> = iolist_to_binary(join(re:split("abxxC","(?<=a(?i)b)(\\w\\w)c",[trim]))),
<<"abxxC">> = iolist_to_binary(join(re:split("abxxC","(?<=a(?i)b)(\\w\\w)c",[{parts,
2}]))),
<<"abxxC">> = iolist_to_binary(join(re:split("abxxC","(?<=a(?i)b)(\\w\\w)c",[]))),
<<":a">> = iolist_to_binary(join(re:split("aA","(?:(a)|b)(?(1)A|B)",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aA","(?:(a)|b)(?(1)A|B)",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aA","(?:(a)|b)(?(1)A|B)",[]))),
<<"">> = iolist_to_binary(join(re:split("bB","(?:(a)|b)(?(1)A|B)",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("bB","(?:(a)|b)(?(1)A|B)",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("bB","(?:(a)|b)(?(1)A|B)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(a)|b)(?(1)A|B)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(a)|b)(?(1)A|B)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(a)|b)(?(1)A|B)",[]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?:(a)|b)(?(1)A|B)",[trim]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?:(a)|b)(?(1)A|B)",[{parts,
2}]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?:(a)|b)(?(1)A|B)",[]))),
<<"bA">> = iolist_to_binary(join(re:split("bA","(?:(a)|b)(?(1)A|B)",[trim]))),
<<"bA">> = iolist_to_binary(join(re:split("bA","(?:(a)|b)(?(1)A|B)",[{parts,
2}]))),
<<"bA">> = iolist_to_binary(join(re:split("bA","(?:(a)|b)(?(1)A|B)",[]))),
<<":a">> = iolist_to_binary(join(re:split("aa","^(a)?(?(1)a|b)+$",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aa","^(a)?(?(1)a|b)+$",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aa","^(a)?(?(1)a|b)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("b","^(a)?(?(1)a|b)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a)?(?(1)a|b)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","^(a)?(?(1)a|b)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("bb","^(a)?(?(1)a|b)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("bb","^(a)?(?(1)a|b)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("bb","^(a)?(?(1)a|b)+$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a)?(?(1)a|b)+$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a)?(?(1)a|b)+$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a)?(?(1)a|b)+$",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a)?(?(1)a|b)+$",[trim]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a)?(?(1)a|b)+$",[{parts,
2}]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(a)?(?(1)a|b)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("abc:","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc:","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc:","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))),
<<"">> = iolist_to_binary(join(re:split("12","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("12","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("12","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))),
<<"123">> = iolist_to_binary(join(re:split("123","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))),
<<"123">> = iolist_to_binary(join(re:split("123","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts,
2}]))),
<<"123">> = iolist_to_binary(join(re:split("123","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?=abc)\\w{3}:|\\d\\d)$",[trim]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?=abc)\\w{3}:|\\d\\d)$",[{parts,
2}]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?=abc)\\w{3}:|\\d\\d)$",[]))),
ok.
run13() ->
<<"">> = iolist_to_binary(join(re:split("abc:","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc:","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc:","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))),
<<"">> = iolist_to_binary(join(re:split("12","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("12","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("12","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))),
<<"123">> = iolist_to_binary(join(re:split("123","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))),
<<"123">> = iolist_to_binary(join(re:split("123","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts,
2}]))),
<<"123">> = iolist_to_binary(join(re:split("123","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?!abc)\\d\\d|\\w{3}:)$",[trim]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?!abc)\\d\\d|\\w{3}:)$",[{parts,
2}]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","^(?(?!abc)\\d\\d|\\w{3}:)$",[]))),
<<"foo">> = iolist_to_binary(join(re:split("foobar","(?(?<=foo)bar|cat)",[trim]))),
<<"foo:">> = iolist_to_binary(join(re:split("foobar","(?(?<=foo)bar|cat)",[{parts,
2}]))),
<<"foo:">> = iolist_to_binary(join(re:split("foobar","(?(?<=foo)bar|cat)",[]))),
<<"">> = iolist_to_binary(join(re:split("cat","(?(?<=foo)bar|cat)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("cat","(?(?<=foo)bar|cat)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("cat","(?(?<=foo)bar|cat)",[]))),
<<"f">> = iolist_to_binary(join(re:split("fcat","(?(?<=foo)bar|cat)",[trim]))),
<<"f:">> = iolist_to_binary(join(re:split("fcat","(?(?<=foo)bar|cat)",[{parts,
2}]))),
<<"f:">> = iolist_to_binary(join(re:split("fcat","(?(?<=foo)bar|cat)",[]))),
<<"fo">> = iolist_to_binary(join(re:split("focat","(?(?<=foo)bar|cat)",[trim]))),
<<"fo:">> = iolist_to_binary(join(re:split("focat","(?(?<=foo)bar|cat)",[{parts,
2}]))),
<<"fo:">> = iolist_to_binary(join(re:split("focat","(?(?<=foo)bar|cat)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?<=foo)bar|cat)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?<=foo)bar|cat)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?<=foo)bar|cat)",[]))),
<<"foocat">> = iolist_to_binary(join(re:split("foocat","(?(?<=foo)bar|cat)",[trim]))),
<<"foocat">> = iolist_to_binary(join(re:split("foocat","(?(?<=foo)bar|cat)",[{parts,
2}]))),
<<"foocat">> = iolist_to_binary(join(re:split("foocat","(?(?<=foo)bar|cat)",[]))),
<<"foo">> = iolist_to_binary(join(re:split("foobar","(?(?<!foo)cat|bar)",[trim]))),
<<"foo:">> = iolist_to_binary(join(re:split("foobar","(?(?<!foo)cat|bar)",[{parts,
2}]))),
<<"foo:">> = iolist_to_binary(join(re:split("foobar","(?(?<!foo)cat|bar)",[]))),
<<"">> = iolist_to_binary(join(re:split("cat","(?(?<!foo)cat|bar)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("cat","(?(?<!foo)cat|bar)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("cat","(?(?<!foo)cat|bar)",[]))),
<<"f">> = iolist_to_binary(join(re:split("fcat","(?(?<!foo)cat|bar)",[trim]))),
<<"f:">> = iolist_to_binary(join(re:split("fcat","(?(?<!foo)cat|bar)",[{parts,
2}]))),
<<"f:">> = iolist_to_binary(join(re:split("fcat","(?(?<!foo)cat|bar)",[]))),
<<"fo">> = iolist_to_binary(join(re:split("focat","(?(?<!foo)cat|bar)",[trim]))),
<<"fo:">> = iolist_to_binary(join(re:split("focat","(?(?<!foo)cat|bar)",[{parts,
2}]))),
<<"fo:">> = iolist_to_binary(join(re:split("focat","(?(?<!foo)cat|bar)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?<!foo)cat|bar)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?<!foo)cat|bar)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?<!foo)cat|bar)",[]))),
<<"foocat">> = iolist_to_binary(join(re:split("foocat","(?(?<!foo)cat|bar)",[trim]))),
<<"foocat">> = iolist_to_binary(join(re:split("foocat","(?(?<!foo)cat|bar)",[{parts,
2}]))),
<<"foocat">> = iolist_to_binary(join(re:split("foocat","(?(?<!foo)cat|bar)",[]))),
<<"">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended,
trim]))),
<<"::">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended,
{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended]))),
<<":(">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) |) ",[extended,
trim]))),
<<":(:">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) |) ",[extended,
{parts,
2}]))),
<<":(:">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) |) ",[extended]))),
<<":::(">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) |) ",[extended,
trim]))),
<<"::(abcd) fox">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) |) ",[extended,
{parts,
2}]))),
<<":::(:::">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) |) ",[extended]))),
<<"(">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended,
trim]))),
<<"(::">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended,
{parts,
2}]))),
<<"(::">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) |) ",[extended]))),
<<"">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended,
trim]))),
<<"::">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended,
{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended]))),
<<":(">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) ) ",[extended,
trim]))),
<<":(:">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) ) ",[extended,
{parts,
2}]))),
<<":(:">> = iolist_to_binary(join(re:split("(abcd)","( \\( )? [^()]+ (?(1) \\) ) ",[extended]))),
<<":::(">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) ) ",[extended,
trim]))),
<<"::(abcd) fox">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) ) ",[extended,
{parts,
2}]))),
<<":::(:::">> = iolist_to_binary(join(re:split("the quick (abcd) fox","( \\( )? [^()]+ (?(1) \\) ) ",[extended]))),
<<"(">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended,
trim]))),
<<"(::">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended,
{parts,
2}]))),
<<"(::">> = iolist_to_binary(join(re:split("(abcd","( \\( )? [^()]+ (?(1) \\) ) ",[extended]))),
<<":1:2">> = iolist_to_binary(join(re:split("12","^(?(2)a|(1)(2))+$",[trim]))),
<<":1:2:">> = iolist_to_binary(join(re:split("12","^(?(2)a|(1)(2))+$",[{parts,
2}]))),
<<":1:2:">> = iolist_to_binary(join(re:split("12","^(?(2)a|(1)(2))+$",[]))),
<<":1:2">> = iolist_to_binary(join(re:split("12a","^(?(2)a|(1)(2))+$",[trim]))),
<<":1:2:">> = iolist_to_binary(join(re:split("12a","^(?(2)a|(1)(2))+$",[{parts,
2}]))),
<<":1:2:">> = iolist_to_binary(join(re:split("12a","^(?(2)a|(1)(2))+$",[]))),
<<":1:2">> = iolist_to_binary(join(re:split("12aa","^(?(2)a|(1)(2))+$",[trim]))),
<<":1:2:">> = iolist_to_binary(join(re:split("12aa","^(?(2)a|(1)(2))+$",[{parts,
2}]))),
<<":1:2:">> = iolist_to_binary(join(re:split("12aa","^(?(2)a|(1)(2))+$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(2)a|(1)(2))+$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(2)a|(1)(2))+$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?(2)a|(1)(2))+$",[]))),
<<"1234">> = iolist_to_binary(join(re:split("1234","^(?(2)a|(1)(2))+$",[trim]))),
<<"1234">> = iolist_to_binary(join(re:split("1234","^(?(2)a|(1)(2))+$",[{parts,
2}]))),
<<"1234">> = iolist_to_binary(join(re:split("1234","^(?(2)a|(1)(2))+$",[]))),
<<":blah">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+\\1",[trim]))),
<<":blah:">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+\\1",[{parts,
2}]))),
<<":blah:">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+\\1",[]))),
<<":BLAH">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+\\1",[trim]))),
<<":BLAH:">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+\\1",[{parts,
2}]))),
<<":BLAH:">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+\\1",[]))),
<<":Blah">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+\\1",[trim]))),
<<":Blah:">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+\\1",[{parts,
2}]))),
<<":Blah:">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+\\1",[]))),
<<":blaH">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+\\1",[trim]))),
<<":blaH:">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+\\1",[{parts,
2}]))),
<<":blaH:">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+\\1",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)blah)\\s+\\1",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)blah)\\s+\\1",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)blah)\\s+\\1",[]))),
<<"blah BLAH">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+\\1",[trim]))),
<<"blah BLAH">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+\\1",[{parts,
2}]))),
<<"blah BLAH">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+\\1",[]))),
<<"Blah blah">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+\\1",[trim]))),
<<"Blah blah">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+\\1",[{parts,
2}]))),
<<"Blah blah">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+\\1",[]))),
<<"blaH blah">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+\\1",[trim]))),
<<"blaH blah">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+\\1",[{parts,
2}]))),
<<"blaH blah">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+\\1",[]))),
<<":blah">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+(?i:\\1)",[trim]))),
<<":blah:">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+(?i:\\1)",[{parts,
2}]))),
<<":blah:">> = iolist_to_binary(join(re:split("blah blah","((?i)blah)\\s+(?i:\\1)",[]))),
<<":BLAH">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+(?i:\\1)",[trim]))),
<<":BLAH:">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+(?i:\\1)",[{parts,
2}]))),
<<":BLAH:">> = iolist_to_binary(join(re:split("BLAH BLAH","((?i)blah)\\s+(?i:\\1)",[]))),
<<":Blah">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+(?i:\\1)",[trim]))),
<<":Blah:">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+(?i:\\1)",[{parts,
2}]))),
<<":Blah:">> = iolist_to_binary(join(re:split("Blah Blah","((?i)blah)\\s+(?i:\\1)",[]))),
<<":blaH">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+(?i:\\1)",[trim]))),
<<":blaH:">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+(?i:\\1)",[{parts,
2}]))),
<<":blaH:">> = iolist_to_binary(join(re:split("blaH blaH","((?i)blah)\\s+(?i:\\1)",[]))),
<<":blah">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+(?i:\\1)",[trim]))),
<<":blah:">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+(?i:\\1)",[{parts,
2}]))),
<<":blah:">> = iolist_to_binary(join(re:split("blah BLAH","((?i)blah)\\s+(?i:\\1)",[]))),
<<":Blah">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+(?i:\\1)",[trim]))),
<<":Blah:">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+(?i:\\1)",[{parts,
2}]))),
<<":Blah:">> = iolist_to_binary(join(re:split("Blah blah","((?i)blah)\\s+(?i:\\1)",[]))),
<<":blaH">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+(?i:\\1)",[trim]))),
<<":blaH:">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+(?i:\\1)",[{parts,
2}]))),
<<":blaH:">> = iolist_to_binary(join(re:split("blaH blah","((?i)blah)\\s+(?i:\\1)",[]))),
<<"">> = iolist_to_binary(join(re:split("a","(?>a*)*",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","(?>a*)*",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","(?>a*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("aa","(?>a*)*",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aa","(?>a*)*",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aa","(?>a*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","(?>a*)*",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","(?>a*)*",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","(?>a*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","(abc|)+",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("abc","(abc|)+",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("abc","(abc|)+",[]))),
<<"">> = iolist_to_binary(join(re:split("abcabc","(abc|)+",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("abcabc","(abc|)+",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("abcabc","(abc|)+",[]))),
<<"">> = iolist_to_binary(join(re:split("abcabcabc","(abc|)+",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("abcabcabc","(abc|)+",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("abcabcabc","(abc|)+",[]))),
<<"x::y::z">> = iolist_to_binary(join(re:split("xyz","(abc|)+",[trim]))),
<<"x::yz">> = iolist_to_binary(join(re:split("xyz","(abc|)+",[{parts,
2}]))),
<<"x::y::z::">> = iolist_to_binary(join(re:split("xyz","(abc|)+",[]))),
<<"">> = iolist_to_binary(join(re:split("a","([a]*)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","([a]*)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","([a]*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaa","([a]*)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaa","([a]*)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaa","([a]*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("a","([ab]*)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","([ab]*)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","([ab]*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("b","([ab]*)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","([ab]*)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","([ab]*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("ababab","([ab]*)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("ababab","([ab]*)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("ababab","([ab]*)*",[]))),
<<"::c::d::e">> = iolist_to_binary(join(re:split("aaaabcde","([ab]*)*",[trim]))),
<<"::cde">> = iolist_to_binary(join(re:split("aaaabcde","([ab]*)*",[{parts,
2}]))),
<<"::c::d::e::">> = iolist_to_binary(join(re:split("aaaabcde","([ab]*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("bbbb","([ab]*)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("bbbb","([ab]*)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("bbbb","([ab]*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("b","([^a]*)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","([^a]*)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","([^a]*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("bbbb","([^a]*)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("bbbb","([^a]*)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("bbbb","([^a]*)*",[]))),
<<"a::a::a">> = iolist_to_binary(join(re:split("aaa","([^a]*)*",[trim]))),
<<"a::aa">> = iolist_to_binary(join(re:split("aaa","([^a]*)*",[{parts,
2}]))),
<<"a::a::a::">> = iolist_to_binary(join(re:split("aaa","([^a]*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("cccc","([^ab]*)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("cccc","([^ab]*)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("cccc","([^ab]*)*",[]))),
<<"a::b::a::b">> = iolist_to_binary(join(re:split("abab","([^ab]*)*",[trim]))),
<<"a::bab">> = iolist_to_binary(join(re:split("abab","([^ab]*)*",[{parts,
2}]))),
<<"a::b::a::b::">> = iolist_to_binary(join(re:split("abab","([^ab]*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("a","([a]*?)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","([a]*?)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","([a]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","([a]*?)*",[trim]))),
<<"::aaa">> = iolist_to_binary(join(re:split("aaaa","([a]*?)*",[{parts,
2}]))),
<<"::::::::">> = iolist_to_binary(join(re:split("aaaa","([a]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("a","([ab]*?)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","([ab]*?)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","([ab]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("b","([ab]*?)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","([ab]*?)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","([ab]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("abab","([ab]*?)*",[trim]))),
<<"::bab">> = iolist_to_binary(join(re:split("abab","([ab]*?)*",[{parts,
2}]))),
<<"::::::::">> = iolist_to_binary(join(re:split("abab","([ab]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("baba","([ab]*?)*",[trim]))),
<<"::aba">> = iolist_to_binary(join(re:split("baba","([ab]*?)*",[{parts,
2}]))),
<<"::::::::">> = iolist_to_binary(join(re:split("baba","([ab]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("b","([^a]*?)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","([^a]*?)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","([^a]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("bbbb","([^a]*?)*",[trim]))),
<<"::bbb">> = iolist_to_binary(join(re:split("bbbb","([^a]*?)*",[{parts,
2}]))),
<<"::::::::">> = iolist_to_binary(join(re:split("bbbb","([^a]*?)*",[]))),
<<"a::a::a">> = iolist_to_binary(join(re:split("aaa","([^a]*?)*",[trim]))),
<<"a::aa">> = iolist_to_binary(join(re:split("aaa","([^a]*?)*",[{parts,
2}]))),
<<"a::a::a::">> = iolist_to_binary(join(re:split("aaa","([^a]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("c","([^ab]*?)*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("c","([^ab]*?)*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("c","([^ab]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("cccc","([^ab]*?)*",[trim]))),
<<"::ccc">> = iolist_to_binary(join(re:split("cccc","([^ab]*?)*",[{parts,
2}]))),
<<"::::::::">> = iolist_to_binary(join(re:split("cccc","([^ab]*?)*",[]))),
<<"b::a::b::a">> = iolist_to_binary(join(re:split("baba","([^ab]*?)*",[trim]))),
<<"b::aba">> = iolist_to_binary(join(re:split("baba","([^ab]*?)*",[{parts,
2}]))),
<<"b::a::b::a::">> = iolist_to_binary(join(re:split("baba","([^ab]*?)*",[]))),
<<"">> = iolist_to_binary(join(re:split("a","(?>a*)*",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","(?>a*)*",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","(?>a*)*",[]))),
<<":b:c:d:e">> = iolist_to_binary(join(re:split("aaabcde","(?>a*)*",[trim]))),
<<":bcde">> = iolist_to_binary(join(re:split("aaabcde","(?>a*)*",[{parts,
2}]))),
<<":b:c:d:e:">> = iolist_to_binary(join(re:split("aaabcde","(?>a*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaa","((?>a*))*",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaa","((?>a*))*",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaa","((?>a*))*",[]))),
<<"::b::b">> = iolist_to_binary(join(re:split("aabbaa","((?>a*))*",[trim]))),
<<"::bbaa">> = iolist_to_binary(join(re:split("aabbaa","((?>a*))*",[{parts,
2}]))),
<<"::b::b::">> = iolist_to_binary(join(re:split("aabbaa","((?>a*))*",[]))),
ok.
run14() ->
<<"a::a::a::a::a">> = iolist_to_binary(join(re:split("aaaaa","((?>a*?))*",[trim]))),
<<"a::aaaa">> = iolist_to_binary(join(re:split("aaaaa","((?>a*?))*",[{parts,
2}]))),
<<"a::a::a::a::a::">> = iolist_to_binary(join(re:split("aaaaa","((?>a*?))*",[]))),
<<"a::a::b::b::a::a">> = iolist_to_binary(join(re:split("aabbaa","((?>a*?))*",[trim]))),
<<"a::abbaa">> = iolist_to_binary(join(re:split("aabbaa","((?>a*?))*",[{parts,
2}]))),
<<"a::a::b::b::a::a::">> = iolist_to_binary(join(re:split("aabbaa","((?>a*?))*",[]))),
<<"">> = 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]))),
<<":">> = 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}]))),
<<":">> = 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]))),
<<"">> = 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]))),
<<":">> = 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}]))),
<<":">> = 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]))),
<<"*** 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]))),
<<"*** 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}]))),
<<"*** 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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"foo:foo">> = iolist_to_binary(join(re:split("foobarfoo","(?<=(foo))bar\\1",[trim]))),
<<"foo:foo:">> = iolist_to_binary(join(re:split("foobarfoo","(?<=(foo))bar\\1",[{parts,
2}]))),
<<"foo:foo:">> = iolist_to_binary(join(re:split("foobarfoo","(?<=(foo))bar\\1",[]))),
<<"foo:foo:tling">> = iolist_to_binary(join(re:split("foobarfootling","(?<=(foo))bar\\1",[trim]))),
<<"foo:foo:tling">> = iolist_to_binary(join(re:split("foobarfootling","(?<=(foo))bar\\1",[{parts,
2}]))),
<<"foo:foo:tling">> = iolist_to_binary(join(re:split("foobarfootling","(?<=(foo))bar\\1",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo))bar\\1",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo))bar\\1",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(foo))bar\\1",[]))),
<<"foobar">> = iolist_to_binary(join(re:split("foobar","(?<=(foo))bar\\1",[trim]))),
<<"foobar">> = iolist_to_binary(join(re:split("foobar","(?<=(foo))bar\\1",[{parts,
2}]))),
<<"foobar">> = iolist_to_binary(join(re:split("foobar","(?<=(foo))bar\\1",[]))),
<<"barfoo">> = iolist_to_binary(join(re:split("barfoo","(?<=(foo))bar\\1",[trim]))),
<<"barfoo">> = iolist_to_binary(join(re:split("barfoo","(?<=(foo))bar\\1",[{parts,
2}]))),
<<"barfoo">> = iolist_to_binary(join(re:split("barfoo","(?<=(foo))bar\\1",[]))),
<<"">> = iolist_to_binary(join(re:split("saturday","(?i:saturday|sunday)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("saturday","(?i:saturday|sunday)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("saturday","(?i:saturday|sunday)",[]))),
<<"">> = iolist_to_binary(join(re:split("sunday","(?i:saturday|sunday)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("sunday","(?i:saturday|sunday)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("sunday","(?i:saturday|sunday)",[]))),
<<"">> = iolist_to_binary(join(re:split("Saturday","(?i:saturday|sunday)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("Saturday","(?i:saturday|sunday)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("Saturday","(?i:saturday|sunday)",[]))),
<<"">> = iolist_to_binary(join(re:split("Sunday","(?i:saturday|sunday)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("Sunday","(?i:saturday|sunday)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("Sunday","(?i:saturday|sunday)",[]))),
<<"">> = iolist_to_binary(join(re:split("SATURDAY","(?i:saturday|sunday)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("SATURDAY","(?i:saturday|sunday)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("SATURDAY","(?i:saturday|sunday)",[]))),
<<"">> = iolist_to_binary(join(re:split("SUNDAY","(?i:saturday|sunday)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("SUNDAY","(?i:saturday|sunday)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("SUNDAY","(?i:saturday|sunday)",[]))),
<<"">> = iolist_to_binary(join(re:split("SunDay","(?i:saturday|sunday)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("SunDay","(?i:saturday|sunday)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("SunDay","(?i:saturday|sunday)",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abcx","(a(?i)bc|BB)x",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcx","(a(?i)bc|BB)x",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcx","(a(?i)bc|BB)x",[]))),
<<":aBC">> = iolist_to_binary(join(re:split("aBCx","(a(?i)bc|BB)x",[trim]))),
<<":aBC:">> = iolist_to_binary(join(re:split("aBCx","(a(?i)bc|BB)x",[{parts,
2}]))),
<<":aBC:">> = iolist_to_binary(join(re:split("aBCx","(a(?i)bc|BB)x",[]))),
<<":bb">> = iolist_to_binary(join(re:split("bbx","(a(?i)bc|BB)x",[trim]))),
<<":bb:">> = iolist_to_binary(join(re:split("bbx","(a(?i)bc|BB)x",[{parts,
2}]))),
<<":bb:">> = iolist_to_binary(join(re:split("bbx","(a(?i)bc|BB)x",[]))),
<<":BB">> = iolist_to_binary(join(re:split("BBx","(a(?i)bc|BB)x",[trim]))),
<<":BB:">> = iolist_to_binary(join(re:split("BBx","(a(?i)bc|BB)x",[{parts,
2}]))),
<<":BB:">> = iolist_to_binary(join(re:split("BBx","(a(?i)bc|BB)x",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)bc|BB)x",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)bc|BB)x",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(a(?i)bc|BB)x",[]))),
<<"abcX">> = iolist_to_binary(join(re:split("abcX","(a(?i)bc|BB)x",[trim]))),
<<"abcX">> = iolist_to_binary(join(re:split("abcX","(a(?i)bc|BB)x",[{parts,
2}]))),
<<"abcX">> = iolist_to_binary(join(re:split("abcX","(a(?i)bc|BB)x",[]))),
<<"aBCX">> = iolist_to_binary(join(re:split("aBCX","(a(?i)bc|BB)x",[trim]))),
<<"aBCX">> = iolist_to_binary(join(re:split("aBCX","(a(?i)bc|BB)x",[{parts,
2}]))),
<<"aBCX">> = iolist_to_binary(join(re:split("aBCX","(a(?i)bc|BB)x",[]))),
<<"bbX">> = iolist_to_binary(join(re:split("bbX","(a(?i)bc|BB)x",[trim]))),
<<"bbX">> = iolist_to_binary(join(re:split("bbX","(a(?i)bc|BB)x",[{parts,
2}]))),
<<"bbX">> = iolist_to_binary(join(re:split("bbX","(a(?i)bc|BB)x",[]))),
<<"BBX">> = iolist_to_binary(join(re:split("BBX","(a(?i)bc|BB)x",[trim]))),
<<"BBX">> = iolist_to_binary(join(re:split("BBX","(a(?i)bc|BB)x",[{parts,
2}]))),
<<"BBX">> = iolist_to_binary(join(re:split("BBX","(a(?i)bc|BB)x",[]))),
<<":ac">> = iolist_to_binary(join(re:split("ac","^([ab](?i)[cd]|[ef])",[trim]))),
<<":ac:">> = iolist_to_binary(join(re:split("ac","^([ab](?i)[cd]|[ef])",[{parts,
2}]))),
<<":ac:">> = iolist_to_binary(join(re:split("ac","^([ab](?i)[cd]|[ef])",[]))),
<<":aC">> = iolist_to_binary(join(re:split("aC","^([ab](?i)[cd]|[ef])",[trim]))),
<<":aC:">> = iolist_to_binary(join(re:split("aC","^([ab](?i)[cd]|[ef])",[{parts,
2}]))),
<<":aC:">> = iolist_to_binary(join(re:split("aC","^([ab](?i)[cd]|[ef])",[]))),
<<":bD">> = iolist_to_binary(join(re:split("bD","^([ab](?i)[cd]|[ef])",[trim]))),
<<":bD:">> = iolist_to_binary(join(re:split("bD","^([ab](?i)[cd]|[ef])",[{parts,
2}]))),
<<":bD:">> = iolist_to_binary(join(re:split("bD","^([ab](?i)[cd]|[ef])",[]))),
<<":e:lephant">> = iolist_to_binary(join(re:split("elephant","^([ab](?i)[cd]|[ef])",[trim]))),
<<":e:lephant">> = iolist_to_binary(join(re:split("elephant","^([ab](?i)[cd]|[ef])",[{parts,
2}]))),
<<":e:lephant">> = iolist_to_binary(join(re:split("elephant","^([ab](?i)[cd]|[ef])",[]))),
<<":E:urope">> = iolist_to_binary(join(re:split("Europe","^([ab](?i)[cd]|[ef])",[trim]))),
<<":E:urope">> = iolist_to_binary(join(re:split("Europe","^([ab](?i)[cd]|[ef])",[{parts,
2}]))),
<<":E:urope">> = iolist_to_binary(join(re:split("Europe","^([ab](?i)[cd]|[ef])",[]))),
<<":f:rog">> = iolist_to_binary(join(re:split("frog","^([ab](?i)[cd]|[ef])",[trim]))),
<<":f:rog">> = iolist_to_binary(join(re:split("frog","^([ab](?i)[cd]|[ef])",[{parts,
2}]))),
<<":f:rog">> = iolist_to_binary(join(re:split("frog","^([ab](?i)[cd]|[ef])",[]))),
<<":F:rance">> = iolist_to_binary(join(re:split("France","^([ab](?i)[cd]|[ef])",[trim]))),
<<":F:rance">> = iolist_to_binary(join(re:split("France","^([ab](?i)[cd]|[ef])",[{parts,
2}]))),
<<":F:rance">> = iolist_to_binary(join(re:split("France","^([ab](?i)[cd]|[ef])",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([ab](?i)[cd]|[ef])",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([ab](?i)[cd]|[ef])",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^([ab](?i)[cd]|[ef])",[]))),
<<"Africa">> = iolist_to_binary(join(re:split("Africa","^([ab](?i)[cd]|[ef])",[trim]))),
<<"Africa">> = iolist_to_binary(join(re:split("Africa","^([ab](?i)[cd]|[ef])",[{parts,
2}]))),
<<"Africa">> = iolist_to_binary(join(re:split("Africa","^([ab](?i)[cd]|[ef])",[]))),
<<":ab">> = iolist_to_binary(join(re:split("ab","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))),
<<":ab:">> = iolist_to_binary(join(re:split("ab","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts,
2}]))),
<<":ab:">> = iolist_to_binary(join(re:split("ab","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))),
<<":aBd">> = iolist_to_binary(join(re:split("aBd","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))),
<<":aBd:">> = iolist_to_binary(join(re:split("aBd","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts,
2}]))),
<<":aBd:">> = iolist_to_binary(join(re:split("aBd","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))),
<<":xy">> = iolist_to_binary(join(re:split("xy","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))),
<<":xy:">> = iolist_to_binary(join(re:split("xy","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts,
2}]))),
<<":xy:">> = iolist_to_binary(join(re:split("xy","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))),
<<":xY">> = iolist_to_binary(join(re:split("xY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))),
<<":xY:">> = iolist_to_binary(join(re:split("xY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts,
2}]))),
<<":xY:">> = iolist_to_binary(join(re:split("xY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))),
<<":z:ebra">> = iolist_to_binary(join(re:split("zebra","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))),
<<":z:ebra">> = iolist_to_binary(join(re:split("zebra","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts,
2}]))),
<<":z:ebra">> = iolist_to_binary(join(re:split("zebra","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))),
<<":Z:ambesi">> = iolist_to_binary(join(re:split("Zambesi","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))),
<<":Z:ambesi">> = iolist_to_binary(join(re:split("Zambesi","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts,
2}]))),
<<":Z:ambesi">> = iolist_to_binary(join(re:split("Zambesi","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))),
<<"aCD">> = iolist_to_binary(join(re:split("aCD","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))),
<<"aCD">> = iolist_to_binary(join(re:split("aCD","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts,
2}]))),
<<"aCD">> = iolist_to_binary(join(re:split("aCD","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))),
<<"XY">> = iolist_to_binary(join(re:split("XY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[trim]))),
<<"XY">> = iolist_to_binary(join(re:split("XY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[{parts,
2}]))),
<<"XY">> = iolist_to_binary(join(re:split("XY","^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)",[]))),
<<"foo
">> = iolist_to_binary(join(re:split("foo
bar","(?<=foo\\n)^bar",[multiline,trim]))),
<<"foo
:">> = iolist_to_binary(join(re:split("foo
bar","(?<=foo\\n)^bar",[multiline,{parts,2}]))),
<<"foo
:">> = iolist_to_binary(join(re:split("foo
bar","(?<=foo\\n)^bar",[multiline]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=foo\\n)^bar",[multiline,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=foo\\n)^bar",[multiline,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=foo\\n)^bar",[multiline]))),
<<"bar">> = iolist_to_binary(join(re:split("bar","(?<=foo\\n)^bar",[multiline,
trim]))),
<<"bar">> = iolist_to_binary(join(re:split("bar","(?<=foo\\n)^bar",[multiline,
{parts,
2}]))),
<<"bar">> = iolist_to_binary(join(re:split("bar","(?<=foo\\n)^bar",[multiline]))),
<<"baz
bar">> = iolist_to_binary(join(re:split("baz
bar","(?<=foo\\n)^bar",[multiline,trim]))),
<<"baz
bar">> = iolist_to_binary(join(re:split("baz
bar","(?<=foo\\n)^bar",[multiline,{parts,2}]))),
<<"baz
bar">> = iolist_to_binary(join(re:split("baz
bar","(?<=foo\\n)^bar",[multiline]))),
<<"bar">> = iolist_to_binary(join(re:split("barbaz","(?<=(?<!foo)bar)baz",[trim]))),
<<"bar:">> = iolist_to_binary(join(re:split("barbaz","(?<=(?<!foo)bar)baz",[{parts,
2}]))),
<<"bar:">> = iolist_to_binary(join(re:split("barbaz","(?<=(?<!foo)bar)baz",[]))),
<<"barbar">> = iolist_to_binary(join(re:split("barbarbaz","(?<=(?<!foo)bar)baz",[trim]))),
<<"barbar:">> = iolist_to_binary(join(re:split("barbarbaz","(?<=(?<!foo)bar)baz",[{parts,
2}]))),
<<"barbar:">> = iolist_to_binary(join(re:split("barbarbaz","(?<=(?<!foo)bar)baz",[]))),
<<"koobar">> = iolist_to_binary(join(re:split("koobarbaz","(?<=(?<!foo)bar)baz",[trim]))),
<<"koobar:">> = iolist_to_binary(join(re:split("koobarbaz","(?<=(?<!foo)bar)baz",[{parts,
2}]))),
<<"koobar:">> = iolist_to_binary(join(re:split("koobarbaz","(?<=(?<!foo)bar)baz",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(?<!foo)bar)baz",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(?<!foo)bar)baz",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(?<!foo)bar)baz",[]))),
<<"baz">> = iolist_to_binary(join(re:split("baz","(?<=(?<!foo)bar)baz",[trim]))),
<<"baz">> = iolist_to_binary(join(re:split("baz","(?<=(?<!foo)bar)baz",[{parts,
2}]))),
<<"baz">> = iolist_to_binary(join(re:split("baz","(?<=(?<!foo)bar)baz",[]))),
<<"foobarbaz">> = iolist_to_binary(join(re:split("foobarbaz","(?<=(?<!foo)bar)baz",[trim]))),
<<"foobarbaz">> = iolist_to_binary(join(re:split("foobarbaz","(?<=(?<!foo)bar)baz",[{parts,
2}]))),
<<"foobarbaz">> = iolist_to_binary(join(re:split("foobarbaz","(?<=(?<!foo)bar)baz",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?){4}$",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?){4}$",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?){4}$",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?){4}$",[trim]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?){4}$",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?){4}$",[trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?){4}$",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?){4}$",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?){4}$",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?){4}$",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?){4}$",[]))),
<<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?){4}$",[]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[]))),
<<":aaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[]))),
<<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?){4}$",[]))),
<<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?){4}$",[]))),
<<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?){4}$",[]))),
<<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?){4}$",[]))),
<<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?){4}$",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<":a:a:a:a">> = iolist_to_binary(join(re:split("aaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<":a:a:a:a:">> = iolist_to_binary(join(re:split("aaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<":a:a:a:a:">> = iolist_to_binary(join(re:split("aaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<":a:aa:a:a">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<":a:aa:a:a:">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<":a:aa:a:a:">> = iolist_to_binary(join(re:split("aaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<":a:aa:a:aa">> = iolist_to_binary(join(re:split("aaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<":a:aa:a:aa:">> = iolist_to_binary(join(re:split("aaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<":a:aa:a:aa:">> = iolist_to_binary(join(re:split("aaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<":a:aa:aaa:a">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<":a:aa:aaa:a:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<":a:aa:aaa:a:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<":a:aa:aaa:aaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<":a:aa:aaa:aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<":a:aa:aaa:aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[trim]))),
<<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[{parts,
2}]))),
<<"aaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaa","^(a\\1?)(a\\1?)(a\\2?)(a\\3?)$",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","abc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","abc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","abc",[]))),
<<"x:y">> = iolist_to_binary(join(re:split("xabcy","abc",[trim]))),
<<"x:y">> = iolist_to_binary(join(re:split("xabcy","abc",[{parts,
2}]))),
<<"x:y">> = iolist_to_binary(join(re:split("xabcy","abc",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ababc","abc",[trim]))),
<<"ab:">> = iolist_to_binary(join(re:split("ababc","abc",[{parts,
2}]))),
<<"ab:">> = iolist_to_binary(join(re:split("ababc","abc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[]))),
<<"xbc">> = iolist_to_binary(join(re:split("xbc","abc",[trim]))),
<<"xbc">> = iolist_to_binary(join(re:split("xbc","abc",[{parts,
2}]))),
<<"xbc">> = iolist_to_binary(join(re:split("xbc","abc",[]))),
<<"axc">> = iolist_to_binary(join(re:split("axc","abc",[trim]))),
<<"axc">> = iolist_to_binary(join(re:split("axc","abc",[{parts,
2}]))),
<<"axc">> = iolist_to_binary(join(re:split("axc","abc",[]))),
<<"abx">> = iolist_to_binary(join(re:split("abx","abc",[trim]))),
<<"abx">> = iolist_to_binary(join(re:split("abx","abc",[{parts,
2}]))),
<<"abx">> = iolist_to_binary(join(re:split("abx","abc",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","ab*c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab*c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab*c",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","ab*bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab*bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab*bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbc","ab*bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbc","ab*bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbc","ab*bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbbbc","ab*bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab*bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab*bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbbbc",".{1}",[trim]))),
<<":bbbbc">> = iolist_to_binary(join(re:split("abbbbc",".{1}",[{parts,
2}]))),
<<"::::::">> = iolist_to_binary(join(re:split("abbbbc",".{1}",[]))),
<<":bc">> = iolist_to_binary(join(re:split("abbbbc",".{3,4}",[trim]))),
<<":bc">> = iolist_to_binary(join(re:split("abbbbc",".{3,4}",[{parts,
2}]))),
<<":bc">> = iolist_to_binary(join(re:split("abbbbc",".{3,4}",[]))),
<<"">> = iolist_to_binary(join(re:split("abbbbc","ab{0,}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{0,}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{0,}bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbc","ab+bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbc","ab+bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbc","ab+bc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","ab+bc",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","ab+bc",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","ab+bc",[]))),
<<"abq">> = iolist_to_binary(join(re:split("abq","ab+bc",[trim]))),
<<"abq">> = iolist_to_binary(join(re:split("abq","ab+bc",[{parts,
2}]))),
<<"abq">> = iolist_to_binary(join(re:split("abq","ab+bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbbbc","ab+bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab+bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab+bc",[]))),
ok.
run15() ->
<<"">> = iolist_to_binary(join(re:split("abbbbc","ab{1,}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,}bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{1,3}bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbbbc","ab{3,4}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{3,4}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbbbc","ab{3,4}bc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}bc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}bc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}bc",[]))),
<<"abq">> = iolist_to_binary(join(re:split("abq","ab{4,5}bc",[trim]))),
<<"abq">> = iolist_to_binary(join(re:split("abq","ab{4,5}bc",[{parts,
2}]))),
<<"abq">> = iolist_to_binary(join(re:split("abq","ab{4,5}bc",[]))),
<<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","ab{4,5}bc",[trim]))),
<<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","ab{4,5}bc",[{parts,
2}]))),
<<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","ab{4,5}bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abbc","ab?bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abbc","ab?bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abbc","ab?bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","ab?bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab?bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab?bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","ab{0,1}bc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab{0,1}bc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab{0,1}bc",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","ab?c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab?c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab?c",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","ab{0,1}c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab{0,1}c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","ab{0,1}c",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","^abc$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","^abc$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","^abc$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[]))),
<<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","^abc$",[trim]))),
<<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","^abc$",[{parts,
2}]))),
<<"abbbbc">> = iolist_to_binary(join(re:split("abbbbc","^abc$",[]))),
<<"abcc">> = iolist_to_binary(join(re:split("abcc","^abc$",[trim]))),
<<"abcc">> = iolist_to_binary(join(re:split("abcc","^abc$",[{parts,
2}]))),
<<"abcc">> = iolist_to_binary(join(re:split("abcc","^abc$",[]))),
<<":c">> = iolist_to_binary(join(re:split("abcc","^abc",[trim]))),
<<":c">> = iolist_to_binary(join(re:split("abcc","^abc",[{parts,
2}]))),
<<":c">> = iolist_to_binary(join(re:split("abcc","^abc",[]))),
<<"a">> = iolist_to_binary(join(re:split("aabc","abc$",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("aabc","abc$",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("aabc","abc$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc$",[]))),
<<"a">> = iolist_to_binary(join(re:split("aabc","abc$",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("aabc","abc$",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("aabc","abc$",[]))),
<<"aabcd">> = iolist_to_binary(join(re:split("aabcd","abc$",[trim]))),
<<"aabcd">> = iolist_to_binary(join(re:split("aabcd","abc$",[{parts,
2}]))),
<<"aabcd">> = iolist_to_binary(join(re:split("aabcd","abc$",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","$",[trim]))),
<<"abc:">> = iolist_to_binary(join(re:split("abc","$",[{parts,
2}]))),
<<"abc:">> = iolist_to_binary(join(re:split("abc","$",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","a.c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","a.c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","a.c",[]))),
<<"">> = iolist_to_binary(join(re:split("axc","a.c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("axc","a.c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("axc","a.c",[]))),
<<"">> = iolist_to_binary(join(re:split("axyzc","a.*c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("axyzc","a.*c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("axyzc","a.*c",[]))),
<<"">> = iolist_to_binary(join(re:split("abd","a[bc]d",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abd","a[bc]d",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abd","a[bc]d",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bc]d",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bc]d",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bc]d",[]))),
<<"axyzd">> = iolist_to_binary(join(re:split("axyzd","a[bc]d",[trim]))),
<<"axyzd">> = iolist_to_binary(join(re:split("axyzd","a[bc]d",[{parts,
2}]))),
<<"axyzd">> = iolist_to_binary(join(re:split("axyzd","a[bc]d",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","a[bc]d",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","a[bc]d",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","a[bc]d",[]))),
<<"">> = iolist_to_binary(join(re:split("ace","a[b-d]e",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ace","a[b-d]e",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ace","a[b-d]e",[]))),
<<"a">> = iolist_to_binary(join(re:split("aac","a[b-d]",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("aac","a[b-d]",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("aac","a[b-d]",[]))),
ok.
run16() ->
<<"">> = iolist_to_binary(join(re:split("a-","a[-b]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a-","a[-b]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a-","a[-b]",[]))),
<<"">> = iolist_to_binary(join(re:split("a-","a[b-]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a-","a[b-]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a-","a[b-]",[]))),
<<"">> = iolist_to_binary(join(re:split("a]","a]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a]","a]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a]","a]",[]))),
<<"">> = iolist_to_binary(join(re:split("a]b","a[]]b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a]b","a[]]b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a]b","a[]]b",[]))),
<<"">> = iolist_to_binary(join(re:split("aed","a[^bc]d",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aed","a[^bc]d",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aed","a[^bc]d",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^bc]d",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^bc]d",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^bc]d",[]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[trim]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[{parts,
2}]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[trim]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[{parts,
2}]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","a[^bc]d",[]))),
<<"">> = iolist_to_binary(join(re:split("adc","a[^-b]c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("adc","a[^-b]c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("adc","a[^-b]c",[]))),
<<"">> = iolist_to_binary(join(re:split("adc","a[^]b]c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("adc","a[^]b]c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("adc","a[^]b]c",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^]b]c",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^]b]c",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^]b]c",[]))),
<<"">> = iolist_to_binary(join(re:split("a-c","a[^]b]c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a-c","a[^]b]c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a-c","a[^]b]c",[]))),
<<"a]c">> = iolist_to_binary(join(re:split("a]c","a[^]b]c",[trim]))),
<<"a]c">> = iolist_to_binary(join(re:split("a]c","a[^]b]c",[{parts,
2}]))),
<<"a]c">> = iolist_to_binary(join(re:split("a]c","a[^]b]c",[]))),
<<":-">> = iolist_to_binary(join(re:split("a-","\\ba\\b",[trim]))),
<<":-">> = iolist_to_binary(join(re:split("a-","\\ba\\b",[{parts,
2}]))),
<<":-">> = iolist_to_binary(join(re:split("a-","\\ba\\b",[]))),
<<"-">> = iolist_to_binary(join(re:split("-a","\\ba\\b",[trim]))),
<<"-:">> = iolist_to_binary(join(re:split("-a","\\ba\\b",[{parts,
2}]))),
<<"-:">> = iolist_to_binary(join(re:split("-a","\\ba\\b",[]))),
<<"-:-">> = iolist_to_binary(join(re:split("-a-","\\ba\\b",[trim]))),
<<"-:-">> = iolist_to_binary(join(re:split("-a-","\\ba\\b",[{parts,
2}]))),
<<"-:-">> = iolist_to_binary(join(re:split("-a-","\\ba\\b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\by\\b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\by\\b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\by\\b",[]))),
<<"xy">> = iolist_to_binary(join(re:split("xy","\\by\\b",[trim]))),
<<"xy">> = iolist_to_binary(join(re:split("xy","\\by\\b",[{parts,
2}]))),
<<"xy">> = iolist_to_binary(join(re:split("xy","\\by\\b",[]))),
<<"yz">> = iolist_to_binary(join(re:split("yz","\\by\\b",[trim]))),
<<"yz">> = iolist_to_binary(join(re:split("yz","\\by\\b",[{parts,
2}]))),
<<"yz">> = iolist_to_binary(join(re:split("yz","\\by\\b",[]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","\\by\\b",[trim]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","\\by\\b",[{parts,
2}]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","\\by\\b",[]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","\\Ba\\B",[trim]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","\\Ba\\B",[{parts,
2}]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","\\Ba\\B",[]))),
<<"a-">> = iolist_to_binary(join(re:split("a-","\\Ba\\B",[trim]))),
<<"a-">> = iolist_to_binary(join(re:split("a-","\\Ba\\B",[{parts,
2}]))),
<<"a-">> = iolist_to_binary(join(re:split("a-","\\Ba\\B",[]))),
<<"-a">> = iolist_to_binary(join(re:split("-a","\\Ba\\B",[trim]))),
<<"-a">> = iolist_to_binary(join(re:split("-a","\\Ba\\B",[{parts,
2}]))),
<<"-a">> = iolist_to_binary(join(re:split("-a","\\Ba\\B",[]))),
<<"-a-">> = iolist_to_binary(join(re:split("-a-","\\Ba\\B",[trim]))),
<<"-a-">> = iolist_to_binary(join(re:split("-a-","\\Ba\\B",[{parts,
2}]))),
<<"-a-">> = iolist_to_binary(join(re:split("-a-","\\Ba\\B",[]))),
<<"x">> = iolist_to_binary(join(re:split("xy","\\By\\b",[trim]))),
<<"x:">> = iolist_to_binary(join(re:split("xy","\\By\\b",[{parts,
2}]))),
<<"x:">> = iolist_to_binary(join(re:split("xy","\\By\\b",[]))),
<<":z">> = iolist_to_binary(join(re:split("yz","\\by\\B",[trim]))),
<<":z">> = iolist_to_binary(join(re:split("yz","\\by\\B",[{parts,
2}]))),
<<":z">> = iolist_to_binary(join(re:split("yz","\\by\\B",[]))),
<<"x:z">> = iolist_to_binary(join(re:split("xyz","\\By\\B",[trim]))),
<<"x:z">> = iolist_to_binary(join(re:split("xyz","\\By\\B",[{parts,
2}]))),
<<"x:z">> = iolist_to_binary(join(re:split("xyz","\\By\\B",[]))),
<<"">> = iolist_to_binary(join(re:split("a","\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("-","\\W",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","\\W",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","\\W",[]))),
<<"::::Failers">> = iolist_to_binary(join(re:split("*** Failers","\\W",[trim]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\W",[{parts,
2}]))),
<<"::::Failers">> = iolist_to_binary(join(re:split("*** Failers","\\W",[]))),
<<"">> = iolist_to_binary(join(re:split("-","\\W",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","\\W",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","\\W",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","\\W",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","\\W",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","\\W",[]))),
<<"">> = iolist_to_binary(join(re:split("a b","a\\sb",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a b","a\\sb",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a b","a\\sb",[]))),
<<"">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Sb",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Sb",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Sb",[]))),
<<"">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a-b","a\\Sb",[]))),
<<"a b">> = iolist_to_binary(join(re:split("a b","a\\Sb",[trim]))),
<<"a b">> = iolist_to_binary(join(re:split("a b","a\\Sb",[{parts,
2}]))),
<<"a b">> = iolist_to_binary(join(re:split("a b","a\\Sb",[]))),
<<"">> = iolist_to_binary(join(re:split("1","\\d",[trim]))),
<<":">> = iolist_to_binary(join(re:split("1","\\d",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("1","\\d",[]))),
<<"">> = iolist_to_binary(join(re:split("-","\\D",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","\\D",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","\\D",[]))),
<<"">> = iolist_to_binary(join(re:split("*** Failers","\\D",[trim]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\D",[{parts,
2}]))),
<<":::::::::::">> = iolist_to_binary(join(re:split("*** Failers","\\D",[]))),
<<"">> = iolist_to_binary(join(re:split("-","\\D",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","\\D",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","\\D",[]))),
<<"1">> = iolist_to_binary(join(re:split("1","\\D",[trim]))),
<<"1">> = iolist_to_binary(join(re:split("1","\\D",[{parts,
2}]))),
<<"1">> = iolist_to_binary(join(re:split("1","\\D",[]))),
<<"">> = iolist_to_binary(join(re:split("a","[\\w]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","[\\w]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","[\\w]",[]))),
ok.
run17() ->
<<"">> = iolist_to_binary(join(re:split("-","[\\W]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","[\\W]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","[\\W]",[]))),
<<"::::Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\W]",[trim]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\W]",[{parts,
2}]))),
<<"::::Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\W]",[]))),
<<"">> = iolist_to_binary(join(re:split("-","[\\W]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","[\\W]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","[\\W]",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","[\\W]",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","[\\W]",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","[\\W]",[]))),
<<"">> = iolist_to_binary(join(re:split("a b","a[\\s]b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a b","a[\\s]b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a b","a[\\s]b",[]))),
<<"">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[\\S]b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[\\S]b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[\\S]b",[]))),
<<"">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a-b","a[\\S]b",[]))),
<<"a b">> = iolist_to_binary(join(re:split("a b","a[\\S]b",[trim]))),
<<"a b">> = iolist_to_binary(join(re:split("a b","a[\\S]b",[{parts,
2}]))),
<<"a b">> = iolist_to_binary(join(re:split("a b","a[\\S]b",[]))),
<<"">> = iolist_to_binary(join(re:split("1","[\\d]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("1","[\\d]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("1","[\\d]",[]))),
<<"">> = iolist_to_binary(join(re:split("-","[\\D]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","[\\D]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","[\\D]",[]))),
<<"">> = iolist_to_binary(join(re:split("*** Failers","[\\D]",[trim]))),
<<":** Failers">> = iolist_to_binary(join(re:split("*** Failers","[\\D]",[{parts,
2}]))),
<<":::::::::::">> = iolist_to_binary(join(re:split("*** Failers","[\\D]",[]))),
<<"">> = iolist_to_binary(join(re:split("-","[\\D]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","[\\D]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","[\\D]",[]))),
<<"1">> = iolist_to_binary(join(re:split("1","[\\D]",[trim]))),
<<"1">> = iolist_to_binary(join(re:split("1","[\\D]",[{parts,
2}]))),
<<"1">> = iolist_to_binary(join(re:split("1","[\\D]",[]))),
<<":c">> = iolist_to_binary(join(re:split("abc","ab|cd",[trim]))),
<<":c">> = iolist_to_binary(join(re:split("abc","ab|cd",[{parts,
2}]))),
<<":c">> = iolist_to_binary(join(re:split("abc","ab|cd",[]))),
<<"">> = iolist_to_binary(join(re:split("abcd","ab|cd",[trim]))),
<<":cd">> = iolist_to_binary(join(re:split("abcd","ab|cd",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("abcd","ab|cd",[]))),
<<"d">> = iolist_to_binary(join(re:split("def","()ef",[trim]))),
<<"d::">> = iolist_to_binary(join(re:split("def","()ef",[{parts,
2}]))),
<<"d::">> = iolist_to_binary(join(re:split("def","()ef",[]))),
<<"">> = iolist_to_binary(join(re:split("a(b","a\\(b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a(b","a\\(b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a(b","a\\(b",[]))),
<<"">> = iolist_to_binary(join(re:split("ab","a\\(*b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab","a\\(*b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab","a\\(*b",[]))),
<<"">> = iolist_to_binary(join(re:split("a((b","a\\(*b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a((b","a\\(*b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a((b","a\\(*b",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","a\\\\b",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","a\\\\b",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","a\\\\b",[]))),
<<":a:a:bc">> = iolist_to_binary(join(re:split("abc","((a))",[trim]))),
<<":a:a:bc">> = iolist_to_binary(join(re:split("abc","((a))",[{parts,
2}]))),
<<":a:a:bc">> = iolist_to_binary(join(re:split("abc","((a))",[]))),
<<":a:c">> = iolist_to_binary(join(re:split("abc","(a)b(c)",[trim]))),
<<":a:c:">> = iolist_to_binary(join(re:split("abc","(a)b(c)",[{parts,
2}]))),
<<":a:c:">> = iolist_to_binary(join(re:split("abc","(a)b(c)",[]))),
<<"aabb">> = iolist_to_binary(join(re:split("aabbabc","a+b+c",[trim]))),
<<"aabb:">> = iolist_to_binary(join(re:split("aabbabc","a+b+c",[{parts,
2}]))),
<<"aabb:">> = iolist_to_binary(join(re:split("aabbabc","a+b+c",[]))),
<<"aabb">> = iolist_to_binary(join(re:split("aabbabc","a{1,}b{1,}c",[trim]))),
<<"aabb:">> = iolist_to_binary(join(re:split("aabbabc","a{1,}b{1,}c",[{parts,
2}]))),
<<"aabb:">> = iolist_to_binary(join(re:split("aabbabc","a{1,}b{1,}c",[]))),
<<"">> = iolist_to_binary(join(re:split("abcabc","a.+?c",[trim]))),
<<":abc">> = iolist_to_binary(join(re:split("abcabc","a.+?c",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("abcabc","a.+?c",[]))),
<<":b">> = iolist_to_binary(join(re:split("ab","(a+|b)*",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b)*",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b)*",[]))),
<<":b">> = iolist_to_binary(join(re:split("ab","(a+|b){0,}",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b){0,}",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b){0,}",[]))),
<<":b">> = iolist_to_binary(join(re:split("ab","(a+|b)+",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b)+",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b)+",[]))),
<<":b">> = iolist_to_binary(join(re:split("ab","(a+|b){1,}",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b){1,}",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("ab","(a+|b){1,}",[]))),
ok.
run18() ->
<<":a::b">> = iolist_to_binary(join(re:split("ab","(a+|b)?",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("ab","(a+|b)?",[{parts,
2}]))),
<<":a::b:">> = iolist_to_binary(join(re:split("ab","(a+|b)?",[]))),
<<":a::b">> = iolist_to_binary(join(re:split("ab","(a+|b){0,1}",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("ab","(a+|b){0,1}",[{parts,
2}]))),
<<":a::b:">> = iolist_to_binary(join(re:split("ab","(a+|b){0,1}",[]))),
<<"">> = iolist_to_binary(join(re:split("cde","[^ab]*",[trim]))),
<<":">> = iolist_to_binary(join(re:split("cde","[^ab]*",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("cde","[^ab]*",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[]))),
<<"b">> = iolist_to_binary(join(re:split("b","abc",[trim]))),
<<"b">> = iolist_to_binary(join(re:split("b","abc",[{parts,
2}]))),
<<"b">> = iolist_to_binary(join(re:split("b","abc",[]))),
<<":c">> = iolist_to_binary(join(re:split("abbbcd","([abc])*d",[trim]))),
<<":c:">> = iolist_to_binary(join(re:split("abbbcd","([abc])*d",[{parts,
2}]))),
<<":c:">> = iolist_to_binary(join(re:split("abbbcd","([abc])*d",[]))),
<<":a">> = iolist_to_binary(join(re:split("abcd","([abc])*bcd",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("abcd","([abc])*bcd",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("abcd","([abc])*bcd",[]))),
<<"">> = iolist_to_binary(join(re:split("e","a|b|c|d|e",[trim]))),
<<":">> = iolist_to_binary(join(re:split("e","a|b|c|d|e",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("e","a|b|c|d|e",[]))),
<<":e">> = iolist_to_binary(join(re:split("ef","(a|b|c|d|e)f",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("ef","(a|b|c|d|e)f",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("ef","(a|b|c|d|e)f",[]))),
<<"">> = iolist_to_binary(join(re:split("abcdefg","abcd*efg",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcdefg","abcd*efg",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcdefg","abcd*efg",[]))),
<<"x:y:z">> = iolist_to_binary(join(re:split("xabyabbbz","ab*",[trim]))),
<<"x:yabbbz">> = iolist_to_binary(join(re:split("xabyabbbz","ab*",[{parts,
2}]))),
<<"x:y:z">> = iolist_to_binary(join(re:split("xabyabbbz","ab*",[]))),
<<"x:y:z">> = iolist_to_binary(join(re:split("xayabbbz","ab*",[trim]))),
<<"x:yabbbz">> = iolist_to_binary(join(re:split("xayabbbz","ab*",[{parts,
2}]))),
<<"x:y:z">> = iolist_to_binary(join(re:split("xayabbbz","ab*",[]))),
<<"ab:cd">> = iolist_to_binary(join(re:split("abcde","(ab|cd)e",[trim]))),
<<"ab:cd:">> = iolist_to_binary(join(re:split("abcde","(ab|cd)e",[{parts,
2}]))),
<<"ab:cd:">> = iolist_to_binary(join(re:split("abcde","(ab|cd)e",[]))),
<<"">> = iolist_to_binary(join(re:split("hij","[abhgefdc]ij",[trim]))),
<<":">> = iolist_to_binary(join(re:split("hij","[abhgefdc]ij",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("hij","[abhgefdc]ij",[]))),
<<"abcd">> = iolist_to_binary(join(re:split("abcdef","(abc|)ef",[trim]))),
<<"abcd::">> = iolist_to_binary(join(re:split("abcdef","(abc|)ef",[{parts,
2}]))),
<<"abcd::">> = iolist_to_binary(join(re:split("abcdef","(abc|)ef",[]))),
<<"a:b">> = iolist_to_binary(join(re:split("abcd","(a|b)c*d",[trim]))),
<<"a:b:">> = iolist_to_binary(join(re:split("abcd","(a|b)c*d",[{parts,
2}]))),
<<"a:b:">> = iolist_to_binary(join(re:split("abcd","(a|b)c*d",[]))),
<<":a">> = iolist_to_binary(join(re:split("abc","(ab|ab*)bc",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("abc","(ab|ab*)bc",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("abc","(ab|ab*)bc",[]))),
<<":bc">> = iolist_to_binary(join(re:split("abc","a([bc]*)c*",[trim]))),
<<":bc:">> = iolist_to_binary(join(re:split("abc","a([bc]*)c*",[{parts,
2}]))),
<<":bc:">> = iolist_to_binary(join(re:split("abc","a([bc]*)c*",[]))),
<<":bc:d">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c*d)",[trim]))),
<<":bc:d:">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c*d)",[{parts,
2}]))),
<<":bc:d:">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c*d)",[]))),
<<":bc:d">> = iolist_to_binary(join(re:split("abcd","a([bc]+)(c*d)",[trim]))),
<<":bc:d:">> = iolist_to_binary(join(re:split("abcd","a([bc]+)(c*d)",[{parts,
2}]))),
<<":bc:d:">> = iolist_to_binary(join(re:split("abcd","a([bc]+)(c*d)",[]))),
ok.
run19() ->
<<":b:cd">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c+d)",[trim]))),
<<":b:cd:">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c+d)",[{parts,
2}]))),
<<":b:cd:">> = iolist_to_binary(join(re:split("abcd","a([bc]*)(c+d)",[]))),
<<"">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]*dcdcde",[trim]))),
<<":">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]*dcdcde",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]*dcdcde",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bcd]+dcdcde",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bcd]+dcdcde",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[bcd]+dcdcde",[]))),
<<"abcde">> = iolist_to_binary(join(re:split("abcde","a[bcd]+dcdcde",[trim]))),
<<"abcde">> = iolist_to_binary(join(re:split("abcde","a[bcd]+dcdcde",[{parts,
2}]))),
<<"abcde">> = iolist_to_binary(join(re:split("abcde","a[bcd]+dcdcde",[]))),
<<"adcdcde">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]+dcdcde",[trim]))),
<<"adcdcde">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]+dcdcde",[{parts,
2}]))),
<<"adcdcde">> = iolist_to_binary(join(re:split("adcdcde","a[bcd]+dcdcde",[]))),
<<":ab">> = iolist_to_binary(join(re:split("abc","(ab|a)b*c",[trim]))),
<<":ab:">> = iolist_to_binary(join(re:split("abc","(ab|a)b*c",[{parts,
2}]))),
<<":ab:">> = iolist_to_binary(join(re:split("abc","(ab|a)b*c",[]))),
<<":abc:a:b:d">> = iolist_to_binary(join(re:split("abcd","((a)(b)c)(d)",[trim]))),
<<":abc:a:b:d:">> = iolist_to_binary(join(re:split("abcd","((a)(b)c)(d)",[{parts,
2}]))),
<<":abc:a:b:d:">> = iolist_to_binary(join(re:split("abcd","((a)(b)c)(d)",[]))),
<<"">> = iolist_to_binary(join(re:split("alpha","[a-zA-Z_][a-zA-Z0-9_]*",[trim]))),
<<":">> = iolist_to_binary(join(re:split("alpha","[a-zA-Z_][a-zA-Z0-9_]*",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("alpha","[a-zA-Z_][a-zA-Z0-9_]*",[]))),
<<"a">> = iolist_to_binary(join(re:split("abh","^a(bc+|b[eh])g|.h$",[trim]))),
<<"a::">> = iolist_to_binary(join(re:split("abh","^a(bc+|b[eh])g|.h$",[{parts,
2}]))),
<<"a::">> = iolist_to_binary(join(re:split("abh","^a(bc+|b[eh])g|.h$",[]))),
<<":effgz">> = iolist_to_binary(join(re:split("effgz","(bc+d$|ef*g.|h?i(j|k))",[trim]))),
<<":effgz::">> = iolist_to_binary(join(re:split("effgz","(bc+d$|ef*g.|h?i(j|k))",[{parts,
2}]))),
<<":effgz::">> = iolist_to_binary(join(re:split("effgz","(bc+d$|ef*g.|h?i(j|k))",[]))),
<<":ij:j">> = iolist_to_binary(join(re:split("ij","(bc+d$|ef*g.|h?i(j|k))",[trim]))),
<<":ij:j:">> = iolist_to_binary(join(re:split("ij","(bc+d$|ef*g.|h?i(j|k))",[{parts,
2}]))),
<<":ij:j:">> = iolist_to_binary(join(re:split("ij","(bc+d$|ef*g.|h?i(j|k))",[]))),
<<"r:effgz">> = iolist_to_binary(join(re:split("reffgz","(bc+d$|ef*g.|h?i(j|k))",[trim]))),
<<"r:effgz::">> = iolist_to_binary(join(re:split("reffgz","(bc+d$|ef*g.|h?i(j|k))",[{parts,
2}]))),
<<"r:effgz::">> = iolist_to_binary(join(re:split("reffgz","(bc+d$|ef*g.|h?i(j|k))",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[]))),
<<"effg">> = iolist_to_binary(join(re:split("effg","(bc+d$|ef*g.|h?i(j|k))",[trim]))),
<<"effg">> = iolist_to_binary(join(re:split("effg","(bc+d$|ef*g.|h?i(j|k))",[{parts,
2}]))),
<<"effg">> = iolist_to_binary(join(re:split("effg","(bc+d$|ef*g.|h?i(j|k))",[]))),
<<"bcdd">> = iolist_to_binary(join(re:split("bcdd","(bc+d$|ef*g.|h?i(j|k))",[trim]))),
<<"bcdd">> = iolist_to_binary(join(re:split("bcdd","(bc+d$|ef*g.|h?i(j|k))",[{parts,
2}]))),
<<"bcdd">> = iolist_to_binary(join(re:split("bcdd","(bc+d$|ef*g.|h?i(j|k))",[]))),
<<":a:a:a:a:a:a:a:a:a:a">> = iolist_to_binary(join(re:split("a","((((((((((a))))))))))",[trim]))),
<<":a:a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("a","((((((((((a))))))))))",[{parts,
2}]))),
<<":a:a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("a","((((((((((a))))))))))",[]))),
<<":a:a:a:a:a:a:a:a:a:a">> = iolist_to_binary(join(re:split("aa","((((((((((a))))))))))\\10",[trim]))),
<<":a:a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("aa","((((((((((a))))))))))\\10",[{parts,
2}]))),
<<":a:a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("aa","((((((((((a))))))))))\\10",[]))),
<<":a:a:a:a:a:a:a:a:a">> = iolist_to_binary(join(re:split("a","(((((((((a)))))))))",[trim]))),
<<":a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("a","(((((((((a)))))))))",[{parts,
2}]))),
<<":a:a:a:a:a:a:a:a:a:">> = iolist_to_binary(join(re:split("a","(((((((((a)))))))))",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","multiple words of text",[trim]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","multiple words of text",[{parts,
2}]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","multiple words of text",[]))),
<<"uh-uh">> = iolist_to_binary(join(re:split("uh-uh","multiple words of text",[trim]))),
<<"uh-uh">> = iolist_to_binary(join(re:split("uh-uh","multiple words of text",[{parts,
2}]))),
<<"uh-uh">> = iolist_to_binary(join(re:split("uh-uh","multiple words of text",[]))),
<<":, yeah">> = iolist_to_binary(join(re:split("multiple words, yeah","multiple words",[trim]))),
<<":, yeah">> = iolist_to_binary(join(re:split("multiple words, yeah","multiple words",[{parts,
2}]))),
<<":, yeah">> = iolist_to_binary(join(re:split("multiple words, yeah","multiple words",[]))),
<<":ab:de">> = iolist_to_binary(join(re:split("abcde","(.*)c(.*)",[trim]))),
<<":ab:de:">> = iolist_to_binary(join(re:split("abcde","(.*)c(.*)",[{parts,
2}]))),
<<":ab:de:">> = iolist_to_binary(join(re:split("abcde","(.*)c(.*)",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("(a, b)","\\((.*), (.*)\\)",[trim]))),
<<":a:b:">> = iolist_to_binary(join(re:split("(a, b)","\\((.*), (.*)\\)",[{parts,
2}]))),
<<":a:b:">> = iolist_to_binary(join(re:split("(a, b)","\\((.*), (.*)\\)",[]))),
<<"">> = iolist_to_binary(join(re:split("abcd","abcd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcd","abcd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcd","abcd",[]))),
<<":bc">> = iolist_to_binary(join(re:split("abcd","a(bc)d",[trim]))),
<<":bc:">> = iolist_to_binary(join(re:split("abcd","a(bc)d",[{parts,
2}]))),
<<":bc:">> = iolist_to_binary(join(re:split("abcd","a(bc)d",[]))),
<<"">> = iolist_to_binary(join(re:split("ac","a[-]?c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ac","a[-]?c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ac","a[-]?c",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","(abc)\\1",[]))),
ok.
run20() ->
<<":abc">> = iolist_to_binary(join(re:split("abcabc","([a-c]*)\\1",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","([a-c]*)\\1",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","([a-c]*)\\1",[]))),
<<":a">> = iolist_to_binary(join(re:split("a","(a)|\\1",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("a","(a)|\\1",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("a","(a)|\\1",[]))),
<<"*** F:a:ilers">> = iolist_to_binary(join(re:split("*** Failers","(a)|\\1",[trim]))),
<<"*** F:a:ilers">> = iolist_to_binary(join(re:split("*** Failers","(a)|\\1",[{parts,
2}]))),
<<"*** F:a:ilers">> = iolist_to_binary(join(re:split("*** Failers","(a)|\\1",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("ab","(a)|\\1",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("ab","(a)|\\1",[{parts,
2}]))),
<<":a:b">> = iolist_to_binary(join(re:split("ab","(a)|\\1",[]))),
<<"x">> = iolist_to_binary(join(re:split("x","(a)|\\1",[trim]))),
<<"x">> = iolist_to_binary(join(re:split("x","(a)|\\1",[{parts,
2}]))),
<<"x">> = iolist_to_binary(join(re:split("x","(a)|\\1",[]))),
<<":bb:b:b:cbc:c">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2)*",[trim]))),
<<":bb:b:bcbc">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2)*",[{parts,
2}]))),
<<":bb:b:b:cbc:c:">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2)*",[]))),
<<":cbc:c">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2){3}",[trim]))),
<<":cbc:c:">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2){3}",[{parts,
2}]))),
<<":cbc:c:">> = iolist_to_binary(join(re:split("ababbbcbc","(([a-c])b*?\\2){3}",[]))),
<<"aaaxabaxbaax:bbax:b:a">> = iolist_to_binary(join(re:split("aaaxabaxbaaxbbax","((\\3|b)\\2(a)x)+",[trim]))),
<<"aaaxabaxbaax:bbax:b:a:">> = iolist_to_binary(join(re:split("aaaxabaxbaaxbbax","((\\3|b)\\2(a)x)+",[{parts,
2}]))),
<<"aaaxabaxbaax:bbax:b:a:">> = iolist_to_binary(join(re:split("aaaxabaxbaaxbbax","((\\3|b)\\2(a)x)+",[]))),
<<"bbaababbabaaaaa:bba:b:a">> = iolist_to_binary(join(re:split("bbaababbabaaaaabbaaaabba","((\\3|b)\\2(a)){2,}",[trim]))),
<<"bbaababbabaaaaa:bba:b:a:">> = iolist_to_binary(join(re:split("bbaababbabaaaaabbaaaabba","((\\3|b)\\2(a)){2,}",[{parts,
2}]))),
<<"bbaababbabaaaaa:bba:b:a:">> = iolist_to_binary(join(re:split("bbaababbabaaaaabbaaaabba","((\\3|b)\\2(a)){2,}",[]))),
<<"">> = iolist_to_binary(join(re:split("ABC","abc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABC","abc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABC","abc",[caseless]))),
<<"X:Y">> = iolist_to_binary(join(re:split("XABCY","abc",[caseless,
trim]))),
<<"X:Y">> = iolist_to_binary(join(re:split("XABCY","abc",[caseless,
{parts,
2}]))),
<<"X:Y">> = iolist_to_binary(join(re:split("XABCY","abc",[caseless]))),
<<"AB">> = iolist_to_binary(join(re:split("ABABC","abc",[caseless,
trim]))),
<<"AB:">> = iolist_to_binary(join(re:split("ABABC","abc",[caseless,
{parts,
2}]))),
<<"AB:">> = iolist_to_binary(join(re:split("ABABC","abc",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","abc",[caseless]))),
<<"aaxabxbaxbbx">> = iolist_to_binary(join(re:split("aaxabxbaxbbx","abc",[caseless,
trim]))),
<<"aaxabxbaxbbx">> = iolist_to_binary(join(re:split("aaxabxbaxbbx","abc",[caseless,
{parts,
2}]))),
<<"aaxabxbaxbbx">> = iolist_to_binary(join(re:split("aaxabxbaxbbx","abc",[caseless]))),
<<"XBC">> = iolist_to_binary(join(re:split("XBC","abc",[caseless,
trim]))),
<<"XBC">> = iolist_to_binary(join(re:split("XBC","abc",[caseless,
{parts,
2}]))),
<<"XBC">> = iolist_to_binary(join(re:split("XBC","abc",[caseless]))),
<<"AXC">> = iolist_to_binary(join(re:split("AXC","abc",[caseless,
trim]))),
<<"AXC">> = iolist_to_binary(join(re:split("AXC","abc",[caseless,
{parts,
2}]))),
<<"AXC">> = iolist_to_binary(join(re:split("AXC","abc",[caseless]))),
<<"ABX">> = iolist_to_binary(join(re:split("ABX","abc",[caseless,
trim]))),
<<"ABX">> = iolist_to_binary(join(re:split("ABX","abc",[caseless,
{parts,
2}]))),
<<"ABX">> = iolist_to_binary(join(re:split("ABX","abc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABC","ab*c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab*c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab*c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABC","ab*bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab*bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab*bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABBC","ab*bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABBC","ab*bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABBC","ab*bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABBBBC","ab*?bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab*?bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab*?bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABBBBC","ab{0,}?bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{0,}?bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{0,}?bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABBC","ab+?bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABBC","ab+?bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABBC","ab+?bc",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab+bc",[caseless]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","ab+bc",[caseless,
trim]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","ab+bc",[caseless,
{parts,
2}]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","ab+bc",[caseless]))),
<<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab+bc",[caseless,
trim]))),
<<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab+bc",[caseless,
{parts,
2}]))),
<<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab+bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABBBBC","ab+bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab+bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab+bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,}?bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,}?bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,}?bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,3}?bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,3}?bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{1,3}?bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABBBBC","ab{3,4}?bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{3,4}?bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABBBBC","ab{3,4}?bc",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}?bc",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}?bc",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","ab{4,5}?bc",[caseless]))),
<<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab{4,5}?bc",[caseless,
trim]))),
<<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab{4,5}?bc",[caseless,
{parts,
2}]))),
<<"ABQ">> = iolist_to_binary(join(re:split("ABQ","ab{4,5}?bc",[caseless]))),
<<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","ab{4,5}?bc",[caseless,
trim]))),
<<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","ab{4,5}?bc",[caseless,
{parts,
2}]))),
<<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","ab{4,5}?bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABBC","ab??bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABBC","ab??bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABBC","ab??bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABC","ab??bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab??bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab??bc",[caseless]))),
ok.
run21() ->
<<"">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?bc",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?bc",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?bc",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABC","ab??c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab??c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab??c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABC","ab{0,1}?c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABC","^abc$",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABC","^abc$",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABC","^abc$",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^abc$",[caseless]))),
<<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","^abc$",[caseless,
trim]))),
<<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","^abc$",[caseless,
{parts,
2}]))),
<<"ABBBBC">> = iolist_to_binary(join(re:split("ABBBBC","^abc$",[caseless]))),
<<"ABCC">> = iolist_to_binary(join(re:split("ABCC","^abc$",[caseless,
trim]))),
<<"ABCC">> = iolist_to_binary(join(re:split("ABCC","^abc$",[caseless,
{parts,
2}]))),
<<"ABCC">> = iolist_to_binary(join(re:split("ABCC","^abc$",[caseless]))),
<<":C">> = iolist_to_binary(join(re:split("ABCC","^abc",[caseless,
trim]))),
<<":C">> = iolist_to_binary(join(re:split("ABCC","^abc",[caseless,
{parts,
2}]))),
<<":C">> = iolist_to_binary(join(re:split("ABCC","^abc",[caseless]))),
<<"A">> = iolist_to_binary(join(re:split("AABC","abc$",[caseless,
trim]))),
<<"A:">> = iolist_to_binary(join(re:split("AABC","abc$",[caseless,
{parts,
2}]))),
<<"A:">> = iolist_to_binary(join(re:split("AABC","abc$",[caseless]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","^",[caseless,
trim]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","^",[caseless,
{parts,
2}]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","^",[caseless]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","$",[caseless,
trim]))),
<<"ABC:">> = iolist_to_binary(join(re:split("ABC","$",[caseless,
{parts,
2}]))),
<<"ABC:">> = iolist_to_binary(join(re:split("ABC","$",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABC","a.c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABC","a.c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABC","a.c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("AXC","a.c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("AXC","a.c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("AXC","a.c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("AXYZC","a.*?c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("AXYZC","a.*?c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("AXYZC","a.*?c",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.*c",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.*c",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a.*c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("AABC","a.*c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("AABC","a.*c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("AABC","a.*c",[caseless]))),
<<"AXYZD">> = iolist_to_binary(join(re:split("AXYZD","a.*c",[caseless,
trim]))),
<<"AXYZD">> = iolist_to_binary(join(re:split("AXYZD","a.*c",[caseless,
{parts,
2}]))),
<<"AXYZD">> = iolist_to_binary(join(re:split("AXYZD","a.*c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABD","a[bc]d",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABD","a[bc]d",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABD","a[bc]d",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ACE","a[b-d]e",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ACE","a[b-d]e",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ACE","a[b-d]e",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[b-d]e",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[b-d]e",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[b-d]e",[caseless]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","a[b-d]e",[caseless,
trim]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","a[b-d]e",[caseless,
{parts,
2}]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","a[b-d]e",[caseless]))),
<<"ABD">> = iolist_to_binary(join(re:split("ABD","a[b-d]e",[caseless,
trim]))),
<<"ABD">> = iolist_to_binary(join(re:split("ABD","a[b-d]e",[caseless,
{parts,
2}]))),
<<"ABD">> = iolist_to_binary(join(re:split("ABD","a[b-d]e",[caseless]))),
<<"A">> = iolist_to_binary(join(re:split("AAC","a[b-d]",[caseless,
trim]))),
<<"A:">> = iolist_to_binary(join(re:split("AAC","a[b-d]",[caseless,
{parts,
2}]))),
<<"A:">> = iolist_to_binary(join(re:split("AAC","a[b-d]",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("A-","a[-b]",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("A-","a[-b]",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("A-","a[-b]",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("A-","a[b-]",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("A-","a[b-]",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("A-","a[b-]",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("A]","a]",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("A]","a]",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("A]","a]",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("A]B","a[]]b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("A]B","a[]]b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("A]B","a[]]b",[caseless]))),
ok.
run22() ->
<<"">> = iolist_to_binary(join(re:split("AED","a[^bc]d",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("AED","a[^bc]d",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("AED","a[^bc]d",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ADC","a[^-b]c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ADC","a[^-b]c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ADC","a[^-b]c",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^-b]c",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^-b]c",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a[^-b]c",[caseless]))),
<<"ABD">> = iolist_to_binary(join(re:split("ABD","a[^-b]c",[caseless,
trim]))),
<<"ABD">> = iolist_to_binary(join(re:split("ABD","a[^-b]c",[caseless,
{parts,
2}]))),
<<"ABD">> = iolist_to_binary(join(re:split("ABD","a[^-b]c",[caseless]))),
<<"A-C">> = iolist_to_binary(join(re:split("A-C","a[^-b]c",[caseless,
trim]))),
<<"A-C">> = iolist_to_binary(join(re:split("A-C","a[^-b]c",[caseless,
{parts,
2}]))),
<<"A-C">> = iolist_to_binary(join(re:split("A-C","a[^-b]c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ADC","a[^]b]c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ADC","a[^]b]c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ADC","a[^]b]c",[caseless]))),
<<":C">> = iolist_to_binary(join(re:split("ABC","ab|cd",[caseless,
trim]))),
<<":C">> = iolist_to_binary(join(re:split("ABC","ab|cd",[caseless,
{parts,
2}]))),
<<":C">> = iolist_to_binary(join(re:split("ABC","ab|cd",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABCD","ab|cd",[caseless,
trim]))),
<<":CD">> = iolist_to_binary(join(re:split("ABCD","ab|cd",[caseless,
{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("ABCD","ab|cd",[caseless]))),
<<"D">> = iolist_to_binary(join(re:split("DEF","()ef",[caseless,
trim]))),
<<"D::">> = iolist_to_binary(join(re:split("DEF","()ef",[caseless,
{parts,
2}]))),
<<"D::">> = iolist_to_binary(join(re:split("DEF","()ef",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","$b",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","$b",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","$b",[caseless]))),
<<"A]C">> = iolist_to_binary(join(re:split("A]C","$b",[caseless,
trim]))),
<<"A]C">> = iolist_to_binary(join(re:split("A]C","$b",[caseless,
{parts,
2}]))),
<<"A]C">> = iolist_to_binary(join(re:split("A]C","$b",[caseless]))),
<<"B">> = iolist_to_binary(join(re:split("B","$b",[caseless,
trim]))),
<<"B">> = iolist_to_binary(join(re:split("B","$b",[caseless,
{parts,
2}]))),
<<"B">> = iolist_to_binary(join(re:split("B","$b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("A(B","a\\(b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("A(B","a\\(b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("A(B","a\\(b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("AB","a\\(*b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("AB","a\\(*b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("AB","a\\(*b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("A((B","a\\(*b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("A((B","a\\(*b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("A((B","a\\(*b",[caseless]))),
<<"A">> = iolist_to_binary(join(re:split("A","a\\\\b",[caseless,
notbol,
trim]))),
<<"A">> = iolist_to_binary(join(re:split("A","a\\\\b",[caseless,
notbol,
{parts,
2}]))),
<<"A">> = iolist_to_binary(join(re:split("A","a\\\\b",[caseless,
notbol]))),
<<":A:A:BC">> = iolist_to_binary(join(re:split("ABC","((a))",[caseless,
trim]))),
<<":A:A:BC">> = iolist_to_binary(join(re:split("ABC","((a))",[caseless,
{parts,
2}]))),
<<":A:A:BC">> = iolist_to_binary(join(re:split("ABC","((a))",[caseless]))),
<<":A:C">> = iolist_to_binary(join(re:split("ABC","(a)b(c)",[caseless,
trim]))),
<<":A:C:">> = iolist_to_binary(join(re:split("ABC","(a)b(c)",[caseless,
{parts,
2}]))),
<<":A:C:">> = iolist_to_binary(join(re:split("ABC","(a)b(c)",[caseless]))),
<<"AABB">> = iolist_to_binary(join(re:split("AABBABC","a+b+c",[caseless,
trim]))),
<<"AABB:">> = iolist_to_binary(join(re:split("AABBABC","a+b+c",[caseless,
{parts,
2}]))),
<<"AABB:">> = iolist_to_binary(join(re:split("AABBABC","a+b+c",[caseless]))),
<<"AABB">> = iolist_to_binary(join(re:split("AABBABC","a{1,}b{1,}c",[caseless,
trim]))),
<<"AABB:">> = iolist_to_binary(join(re:split("AABBABC","a{1,}b{1,}c",[caseless,
{parts,
2}]))),
<<"AABB:">> = iolist_to_binary(join(re:split("AABBABC","a{1,}b{1,}c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABCABC","a.+?c",[caseless,
trim]))),
<<":ABC">> = iolist_to_binary(join(re:split("ABCABC","a.+?c",[caseless,
{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("ABCABC","a.+?c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABCABC","a.*?c",[caseless,
trim]))),
<<":ABC">> = iolist_to_binary(join(re:split("ABCABC","a.*?c",[caseless,
{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("ABCABC","a.*?c",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABCABC","a.{0,5}?c",[caseless,
trim]))),
<<":ABC">> = iolist_to_binary(join(re:split("ABCABC","a.{0,5}?c",[caseless,
{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("ABCABC","a.{0,5}?c",[caseless]))),
<<":B">> = iolist_to_binary(join(re:split("AB","(a+|b)*",[caseless,
trim]))),
<<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b)*",[caseless,
{parts,
2}]))),
<<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b)*",[caseless]))),
<<":B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,}",[caseless,
trim]))),
<<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b){0,}",[caseless,
{parts,
2}]))),
<<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b){0,}",[caseless]))),
<<":B">> = iolist_to_binary(join(re:split("AB","(a+|b)+",[caseless,
trim]))),
<<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b)+",[caseless,
{parts,
2}]))),
<<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b)+",[caseless]))),
<<":B">> = iolist_to_binary(join(re:split("AB","(a+|b){1,}",[caseless,
trim]))),
<<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b){1,}",[caseless,
{parts,
2}]))),
<<":B:">> = iolist_to_binary(join(re:split("AB","(a+|b){1,}",[caseless]))),
ok.
run23() ->
<<":A::B">> = iolist_to_binary(join(re:split("AB","(a+|b)?",[caseless,
trim]))),
<<":A:B">> = iolist_to_binary(join(re:split("AB","(a+|b)?",[caseless,
{parts,
2}]))),
<<":A::B:">> = iolist_to_binary(join(re:split("AB","(a+|b)?",[caseless]))),
<<":A::B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}",[caseless,
trim]))),
<<":A:B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}",[caseless,
{parts,
2}]))),
<<":A::B:">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}",[caseless]))),
<<":A::B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}?",[caseless,
trim]))),
<<":A:B">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}?",[caseless,
{parts,
2}]))),
<<":A::B:">> = iolist_to_binary(join(re:split("AB","(a+|b){0,1}?",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("CDE","[^ab]*",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("CDE","[^ab]*",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("CDE","[^ab]*",[caseless]))),
<<":C">> = iolist_to_binary(join(re:split("ABBBCD","([abc])*d",[caseless,
trim]))),
<<":C:">> = iolist_to_binary(join(re:split("ABBBCD","([abc])*d",[caseless,
{parts,
2}]))),
<<":C:">> = iolist_to_binary(join(re:split("ABBBCD","([abc])*d",[caseless]))),
<<":A">> = iolist_to_binary(join(re:split("ABCD","([abc])*bcd",[caseless,
trim]))),
<<":A:">> = iolist_to_binary(join(re:split("ABCD","([abc])*bcd",[caseless,
{parts,
2}]))),
<<":A:">> = iolist_to_binary(join(re:split("ABCD","([abc])*bcd",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("E","a|b|c|d|e",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("E","a|b|c|d|e",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("E","a|b|c|d|e",[caseless]))),
<<":E">> = iolist_to_binary(join(re:split("EF","(a|b|c|d|e)f",[caseless,
trim]))),
<<":E:">> = iolist_to_binary(join(re:split("EF","(a|b|c|d|e)f",[caseless,
{parts,
2}]))),
<<":E:">> = iolist_to_binary(join(re:split("EF","(a|b|c|d|e)f",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABCDEFG","abcd*efg",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABCDEFG","abcd*efg",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABCDEFG","abcd*efg",[caseless]))),
<<"X:Y:Z">> = iolist_to_binary(join(re:split("XABYABBBZ","ab*",[caseless,
trim]))),
<<"X:YABBBZ">> = iolist_to_binary(join(re:split("XABYABBBZ","ab*",[caseless,
{parts,
2}]))),
<<"X:Y:Z">> = iolist_to_binary(join(re:split("XABYABBBZ","ab*",[caseless]))),
<<"X:Y:Z">> = iolist_to_binary(join(re:split("XAYABBBZ","ab*",[caseless,
trim]))),
<<"X:YABBBZ">> = iolist_to_binary(join(re:split("XAYABBBZ","ab*",[caseless,
{parts,
2}]))),
<<"X:Y:Z">> = iolist_to_binary(join(re:split("XAYABBBZ","ab*",[caseless]))),
<<"AB:CD">> = iolist_to_binary(join(re:split("ABCDE","(ab|cd)e",[caseless,
trim]))),
<<"AB:CD:">> = iolist_to_binary(join(re:split("ABCDE","(ab|cd)e",[caseless,
{parts,
2}]))),
<<"AB:CD:">> = iolist_to_binary(join(re:split("ABCDE","(ab|cd)e",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("HIJ","[abhgefdc]ij",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("HIJ","[abhgefdc]ij",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("HIJ","[abhgefdc]ij",[caseless]))),
<<"ABCDE">> = iolist_to_binary(join(re:split("ABCDE","^(ab|cd)e",[caseless,
trim]))),
<<"ABCDE">> = iolist_to_binary(join(re:split("ABCDE","^(ab|cd)e",[caseless,
{parts,
2}]))),
<<"ABCDE">> = iolist_to_binary(join(re:split("ABCDE","^(ab|cd)e",[caseless]))),
<<"ABCD">> = iolist_to_binary(join(re:split("ABCDEF","(abc|)ef",[caseless,
trim]))),
<<"ABCD::">> = iolist_to_binary(join(re:split("ABCDEF","(abc|)ef",[caseless,
{parts,
2}]))),
<<"ABCD::">> = iolist_to_binary(join(re:split("ABCDEF","(abc|)ef",[caseless]))),
<<"A:B">> = iolist_to_binary(join(re:split("ABCD","(a|b)c*d",[caseless,
trim]))),
<<"A:B:">> = iolist_to_binary(join(re:split("ABCD","(a|b)c*d",[caseless,
{parts,
2}]))),
<<"A:B:">> = iolist_to_binary(join(re:split("ABCD","(a|b)c*d",[caseless]))),
<<":A">> = iolist_to_binary(join(re:split("ABC","(ab|ab*)bc",[caseless,
trim]))),
<<":A:">> = iolist_to_binary(join(re:split("ABC","(ab|ab*)bc",[caseless,
{parts,
2}]))),
<<":A:">> = iolist_to_binary(join(re:split("ABC","(ab|ab*)bc",[caseless]))),
<<":BC">> = iolist_to_binary(join(re:split("ABC","a([bc]*)c*",[caseless,
trim]))),
<<":BC:">> = iolist_to_binary(join(re:split("ABC","a([bc]*)c*",[caseless,
{parts,
2}]))),
<<":BC:">> = iolist_to_binary(join(re:split("ABC","a([bc]*)c*",[caseless]))),
<<":BC:D">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c*d)",[caseless,
trim]))),
<<":BC:D:">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c*d)",[caseless,
{parts,
2}]))),
<<":BC:D:">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c*d)",[caseless]))),
ok.
run24() ->
<<":BC:D">> = iolist_to_binary(join(re:split("ABCD","a([bc]+)(c*d)",[caseless,
trim]))),
<<":BC:D:">> = iolist_to_binary(join(re:split("ABCD","a([bc]+)(c*d)",[caseless,
{parts,
2}]))),
<<":BC:D:">> = iolist_to_binary(join(re:split("ABCD","a([bc]+)(c*d)",[caseless]))),
<<":B:CD">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c+d)",[caseless,
trim]))),
<<":B:CD:">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c+d)",[caseless,
{parts,
2}]))),
<<":B:CD:">> = iolist_to_binary(join(re:split("ABCD","a([bc]*)(c+d)",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ADCDCDE","a[bcd]*dcdcde",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ADCDCDE","a[bcd]*dcdcde",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ADCDCDE","a[bcd]*dcdcde",[caseless]))),
<<":AB">> = iolist_to_binary(join(re:split("ABC","(ab|a)b*c",[caseless,
trim]))),
<<":AB:">> = iolist_to_binary(join(re:split("ABC","(ab|a)b*c",[caseless,
{parts,
2}]))),
<<":AB:">> = iolist_to_binary(join(re:split("ABC","(ab|a)b*c",[caseless]))),
<<":ABC:A:B:D">> = iolist_to_binary(join(re:split("ABCD","((a)(b)c)(d)",[caseless,
trim]))),
<<":ABC:A:B:D:">> = iolist_to_binary(join(re:split("ABCD","((a)(b)c)(d)",[caseless,
{parts,
2}]))),
<<":ABC:A:B:D:">> = iolist_to_binary(join(re:split("ABCD","((a)(b)c)(d)",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ALPHA","[a-zA-Z_][a-zA-Z0-9_]*",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ALPHA","[a-zA-Z_][a-zA-Z0-9_]*",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ALPHA","[a-zA-Z_][a-zA-Z0-9_]*",[caseless]))),
<<"A">> = iolist_to_binary(join(re:split("ABH","^a(bc+|b[eh])g|.h$",[caseless,
trim]))),
<<"A::">> = iolist_to_binary(join(re:split("ABH","^a(bc+|b[eh])g|.h$",[caseless,
{parts,
2}]))),
<<"A::">> = iolist_to_binary(join(re:split("ABH","^a(bc+|b[eh])g|.h$",[caseless]))),
<<":EFFGZ">> = iolist_to_binary(join(re:split("EFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless,
trim]))),
<<":EFFGZ::">> = iolist_to_binary(join(re:split("EFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless,
{parts,
2}]))),
<<":EFFGZ::">> = iolist_to_binary(join(re:split("EFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless]))),
<<":IJ:J">> = iolist_to_binary(join(re:split("IJ","(bc+d$|ef*g.|h?i(j|k))",[caseless,
trim]))),
<<":IJ:J:">> = iolist_to_binary(join(re:split("IJ","(bc+d$|ef*g.|h?i(j|k))",[caseless,
{parts,
2}]))),
<<":IJ:J:">> = iolist_to_binary(join(re:split("IJ","(bc+d$|ef*g.|h?i(j|k))",[caseless]))),
<<"R:EFFGZ">> = iolist_to_binary(join(re:split("REFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless,
trim]))),
<<"R:EFFGZ::">> = iolist_to_binary(join(re:split("REFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless,
{parts,
2}]))),
<<"R:EFFGZ::">> = iolist_to_binary(join(re:split("REFFGZ","(bc+d$|ef*g.|h?i(j|k))",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(bc+d$|ef*g.|h?i(j|k))",[caseless]))),
<<"ADCDCDE">> = iolist_to_binary(join(re:split("ADCDCDE","(bc+d$|ef*g.|h?i(j|k))",[caseless,
trim]))),
<<"ADCDCDE">> = iolist_to_binary(join(re:split("ADCDCDE","(bc+d$|ef*g.|h?i(j|k))",[caseless,
{parts,
2}]))),
<<"ADCDCDE">> = iolist_to_binary(join(re:split("ADCDCDE","(bc+d$|ef*g.|h?i(j|k))",[caseless]))),
<<"EFFG">> = iolist_to_binary(join(re:split("EFFG","(bc+d$|ef*g.|h?i(j|k))",[caseless,
trim]))),
<<"EFFG">> = iolist_to_binary(join(re:split("EFFG","(bc+d$|ef*g.|h?i(j|k))",[caseless,
{parts,
2}]))),
<<"EFFG">> = iolist_to_binary(join(re:split("EFFG","(bc+d$|ef*g.|h?i(j|k))",[caseless]))),
<<"BCDD">> = iolist_to_binary(join(re:split("BCDD","(bc+d$|ef*g.|h?i(j|k))",[caseless,
trim]))),
<<"BCDD">> = iolist_to_binary(join(re:split("BCDD","(bc+d$|ef*g.|h?i(j|k))",[caseless,
{parts,
2}]))),
<<"BCDD">> = iolist_to_binary(join(re:split("BCDD","(bc+d$|ef*g.|h?i(j|k))",[caseless]))),
<<":A:A:A:A:A:A:A:A:A:A">> = iolist_to_binary(join(re:split("A","((((((((((a))))))))))",[caseless,
trim]))),
<<":A:A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("A","((((((((((a))))))))))",[caseless,
{parts,
2}]))),
<<":A:A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("A","((((((((((a))))))))))",[caseless]))),
<<":A:A:A:A:A:A:A:A:A:A">> = iolist_to_binary(join(re:split("AA","((((((((((a))))))))))\\10",[caseless,
trim]))),
<<":A:A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("AA","((((((((((a))))))))))\\10",[caseless,
{parts,
2}]))),
<<":A:A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("AA","((((((((((a))))))))))\\10",[caseless]))),
<<":A:A:A:A:A:A:A:A:A">> = iolist_to_binary(join(re:split("A","(((((((((a)))))))))",[caseless,
trim]))),
<<":A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("A","(((((((((a)))))))))",[caseless,
{parts,
2}]))),
<<":A:A:A:A:A:A:A:A:A:">> = iolist_to_binary(join(re:split("A","(((((((((a)))))))))",[caseless]))),
<<":A">> = iolist_to_binary(join(re:split("A","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))",[caseless,
trim]))),
<<":A:">> = iolist_to_binary(join(re:split("A","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))",[caseless,
{parts,
2}]))),
<<":A:">> = iolist_to_binary(join(re:split("A","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))",[caseless]))),
<<":C">> = iolist_to_binary(join(re:split("C","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))",[caseless,
trim]))),
<<":C:">> = iolist_to_binary(join(re:split("C","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))",[caseless,
{parts,
2}]))),
<<":C:">> = iolist_to_binary(join(re:split("C","(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","multiple words of text",[caseless]))),
<<"AA">> = iolist_to_binary(join(re:split("AA","multiple words of text",[caseless,
trim]))),
<<"AA">> = iolist_to_binary(join(re:split("AA","multiple words of text",[caseless,
{parts,
2}]))),
<<"AA">> = iolist_to_binary(join(re:split("AA","multiple words of text",[caseless]))),
<<"UH-UH">> = iolist_to_binary(join(re:split("UH-UH","multiple words of text",[caseless,
trim]))),
<<"UH-UH">> = iolist_to_binary(join(re:split("UH-UH","multiple words of text",[caseless,
{parts,
2}]))),
<<"UH-UH">> = iolist_to_binary(join(re:split("UH-UH","multiple words of text",[caseless]))),
<<":, YEAH">> = iolist_to_binary(join(re:split("MULTIPLE WORDS, YEAH","multiple words",[caseless,
trim]))),
<<":, YEAH">> = iolist_to_binary(join(re:split("MULTIPLE WORDS, YEAH","multiple words",[caseless,
{parts,
2}]))),
<<":, YEAH">> = iolist_to_binary(join(re:split("MULTIPLE WORDS, YEAH","multiple words",[caseless]))),
<<":AB:DE">> = iolist_to_binary(join(re:split("ABCDE","(.*)c(.*)",[caseless,
trim]))),
<<":AB:DE:">> = iolist_to_binary(join(re:split("ABCDE","(.*)c(.*)",[caseless,
{parts,
2}]))),
<<":AB:DE:">> = iolist_to_binary(join(re:split("ABCDE","(.*)c(.*)",[caseless]))),
<<":A:B">> = iolist_to_binary(join(re:split("(A, B)","\\((.*), (.*)\\)",[caseless,
trim]))),
<<":A:B:">> = iolist_to_binary(join(re:split("(A, B)","\\((.*), (.*)\\)",[caseless,
{parts,
2}]))),
<<":A:B:">> = iolist_to_binary(join(re:split("(A, B)","\\((.*), (.*)\\)",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("ABCD","abcd",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ABCD","abcd",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ABCD","abcd",[caseless]))),
ok.
run25() ->
<<":BC">> = iolist_to_binary(join(re:split("ABCD","a(bc)d",[caseless,
trim]))),
<<":BC:">> = iolist_to_binary(join(re:split("ABCD","a(bc)d",[caseless,
{parts,
2}]))),
<<":BC:">> = iolist_to_binary(join(re:split("ABCD","a(bc)d",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("AC","a[-]?c",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("AC","a[-]?c",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("AC","a[-]?c",[caseless]))),
<<":ABC">> = iolist_to_binary(join(re:split("ABCABC","(abc)\\1",[caseless,
trim]))),
<<":ABC:">> = iolist_to_binary(join(re:split("ABCABC","(abc)\\1",[caseless,
{parts,
2}]))),
<<":ABC:">> = iolist_to_binary(join(re:split("ABCABC","(abc)\\1",[caseless]))),
<<":ABC">> = iolist_to_binary(join(re:split("ABCABC","([a-c]*)\\1",[caseless,
trim]))),
<<":ABC:">> = iolist_to_binary(join(re:split("ABCABC","([a-c]*)\\1",[caseless,
{parts,
2}]))),
<<":ABC:">> = iolist_to_binary(join(re:split("ABCABC","([a-c]*)\\1",[caseless]))),
<<"ab">> = iolist_to_binary(join(re:split("abad","a(?!b).",[trim]))),
<<"ab:">> = iolist_to_binary(join(re:split("abad","a(?!b).",[{parts,
2}]))),
<<"ab:">> = iolist_to_binary(join(re:split("abad","a(?!b).",[]))),
<<"ab">> = iolist_to_binary(join(re:split("abad","a(?=d).",[trim]))),
<<"ab:">> = iolist_to_binary(join(re:split("abad","a(?=d).",[{parts,
2}]))),
<<"ab:">> = iolist_to_binary(join(re:split("abad","a(?=d).",[]))),
<<"ab">> = iolist_to_binary(join(re:split("abad","a(?=c|d).",[trim]))),
<<"ab:">> = iolist_to_binary(join(re:split("abad","a(?=c|d).",[{parts,
2}]))),
<<"ab:">> = iolist_to_binary(join(re:split("abad","a(?=c|d).",[]))),
<<":e">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)(.)",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)(.)",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)(.)",[]))),
<<":e">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)*(.)",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)*(.)",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)*(.)",[]))),
<<":e">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)+?(.)",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)+?(.)",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("ace","a(?:b|c|d)+?(.)",[]))),
<<":d:bcdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+?(.)",[trim]))),
<<":d:bcdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+?(.)",[{parts,
2}]))),
<<":d:bcdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+?(.)",[]))),
<<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+(.)",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+(.)",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d)+(.)",[]))),
<<":b:cdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){2}(.)",[trim]))),
<<":b:cdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){2}(.)",[{parts,
2}]))),
<<":b:cdbe">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){2}(.)",[]))),
<<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}(.)",[trim]))),
<<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}(.)",[{parts,
2}]))),
<<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}(.)",[]))),
<<":d:be">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}?(.)",[trim]))),
<<":d:be">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}?(.)",[{parts,
2}]))),
<<":d:be">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){4,5}?(.)",[]))),
<<":bar:foo:bar">> = iolist_to_binary(join(re:split("foobar","((foo)|(bar))*",[trim]))),
<<":bar:foo:bar:">> = iolist_to_binary(join(re:split("foobar","((foo)|(bar))*",[{parts,
2}]))),
<<":bar:foo:bar:">> = iolist_to_binary(join(re:split("foobar","((foo)|(bar))*",[]))),
<<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}(.)",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}(.)",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}(.)",[]))),
<<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}?(.)",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}?(.)",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){6,7}?(.)",[]))),
<<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}(.)",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}(.)",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}(.)",[]))),
<<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}?(.)",[trim]))),
<<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}?(.)",[{parts,
2}]))),
<<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,6}?(.)",[]))),
<<":e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}(.)",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}(.)",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}(.)",[]))),
ok.
run26() ->
<<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}?(.)",[trim]))),
<<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}?(.)",[{parts,
2}]))),
<<":b:e">> = iolist_to_binary(join(re:split("acdbcdbe","a(?:b|c|d){5,7}?(.)",[]))),
<<":c:e">> = iolist_to_binary(join(re:split("ace","a(?:b|(c|e){1,2}?|d)+?(.)",[trim]))),
<<":c:e:">> = iolist_to_binary(join(re:split("ace","a(?:b|(c|e){1,2}?|d)+?(.)",[{parts,
2}]))),
<<":c:e:">> = iolist_to_binary(join(re:split("ace","a(?:b|(c|e){1,2}?|d)+?(.)",[]))),
<<":A">> = iolist_to_binary(join(re:split("AB","^(.+)?B",[trim]))),
<<":A:">> = iolist_to_binary(join(re:split("AB","^(.+)?B",[{parts,
2}]))),
<<":A:">> = iolist_to_binary(join(re:split("AB","^(.+)?B",[]))),
<<":.">> = iolist_to_binary(join(re:split(".","^([^a-z])|(\\^)$",[trim]))),
<<":.::">> = iolist_to_binary(join(re:split(".","^([^a-z])|(\\^)$",[{parts,
2}]))),
<<":.::">> = iolist_to_binary(join(re:split(".","^([^a-z])|(\\^)$",[]))),
<<":OUT">> = iolist_to_binary(join(re:split("<&OUT","^[<>]&",[trim]))),
<<":OUT">> = iolist_to_binary(join(re:split("<&OUT","^[<>]&",[{parts,
2}]))),
<<":OUT">> = iolist_to_binary(join(re:split("<&OUT","^[<>]&",[]))),
<<":aaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a\\1?){4}$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a\\1?){4}$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a\\1?){4}$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a\\1?){4}$",[]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","^(a\\1?){4}$",[trim]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","^(a\\1?){4}$",[{parts,
2}]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","^(a\\1?){4}$",[]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a\\1?){4}$",[]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[trim]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[{parts,
2}]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a\\1?){4}$",[]))),
<<":aaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a(?(1)\\1)){4}$",[trim]))),
<<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a(?(1)\\1)){4}$",[{parts,
2}]))),
<<":aaaa:">> = iolist_to_binary(join(re:split("aaaaaaaaaa","^(a(?(1)\\1)){4}$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a(?(1)\\1)){4}$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a(?(1)\\1)){4}$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a(?(1)\\1)){4}$",[]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a(?(1)\\1)){4}$",[trim]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a(?(1)\\1)){4}$",[{parts,
2}]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a(?(1)\\1)){4}$",[]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a(?(1)\\1)){4}$",[trim]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a(?(1)\\1)){4}$",[{parts,
2}]))),
<<"aaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaa","^(a(?(1)\\1)){4}$",[]))),
<<":f:o:o:b:a:r">> = iolist_to_binary(join(re:split("foobar","(?:(f)(o)(o)|(b)(a)(r))*",[trim]))),
<<":f:o:o:b:a:r:">> = iolist_to_binary(join(re:split("foobar","(?:(f)(o)(o)|(b)(a)(r))*",[{parts,
2}]))),
<<":f:o:o:b:a:r:">> = iolist_to_binary(join(re:split("foobar","(?:(f)(o)(o)|(b)(a)(r))*",[]))),
<<"a">> = iolist_to_binary(join(re:split("ab","(?<=a)b",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("ab","(?<=a)b",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("ab","(?<=a)b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a)b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a)b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=a)b",[]))),
<<"cb">> = iolist_to_binary(join(re:split("cb","(?<=a)b",[trim]))),
<<"cb">> = iolist_to_binary(join(re:split("cb","(?<=a)b",[{parts,
2}]))),
<<"cb">> = iolist_to_binary(join(re:split("cb","(?<=a)b",[]))),
<<"b">> = iolist_to_binary(join(re:split("b","(?<=a)b",[trim]))),
<<"b">> = iolist_to_binary(join(re:split("b","(?<=a)b",[{parts,
2}]))),
<<"b">> = iolist_to_binary(join(re:split("b","(?<=a)b",[]))),
<<"a">> = iolist_to_binary(join(re:split("ab","(?<!c)b",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("ab","(?<!c)b",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("ab","(?<!c)b",[]))),
<<"">> = iolist_to_binary(join(re:split("b","(?<!c)b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("b","(?<!c)b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("b","(?<!c)b",[]))),
<<"">> = iolist_to_binary(join(re:split("b","(?<!c)b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("b","(?<!c)b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("b","(?<!c)b",[]))),
<<"">> = iolist_to_binary(join(re:split("aba","(?:..)*a",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aba","(?:..)*a",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aba","(?:..)*a",[]))),
<<":b">> = iolist_to_binary(join(re:split("aba","(?:..)*?a",[trim]))),
<<":ba">> = iolist_to_binary(join(re:split("aba","(?:..)*?a",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("aba","(?:..)*?a",[]))),
<<":b:c">> = iolist_to_binary(join(re:split("abc","^(?:b|a(?=(.)))*\\1",[trim]))),
<<":b:c">> = iolist_to_binary(join(re:split("abc","^(?:b|a(?=(.)))*\\1",[{parts,
2}]))),
<<":b:c">> = iolist_to_binary(join(re:split("abc","^(?:b|a(?=(.)))*\\1",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(){3,5}",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(){3,5}",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(){3,5}",[]))),
<<":a">> = iolist_to_binary(join(re:split("aax","^(a+)*ax",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aax","^(a+)*ax",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aax","^(a+)*ax",[]))),
<<":a:a">> = iolist_to_binary(join(re:split("aax","^((a|b)+)*ax",[trim]))),
<<":a:a:">> = iolist_to_binary(join(re:split("aax","^((a|b)+)*ax",[{parts,
2}]))),
<<":a:a:">> = iolist_to_binary(join(re:split("aax","^((a|b)+)*ax",[]))),
<<":a:a">> = iolist_to_binary(join(re:split("aax","^((a|bc)+)*ax",[trim]))),
<<":a:a:">> = iolist_to_binary(join(re:split("aax","^((a|bc)+)*ax",[{parts,
2}]))),
<<":a:a:">> = iolist_to_binary(join(re:split("aax","^((a|bc)+)*ax",[]))),
<<"c">> = iolist_to_binary(join(re:split("cab","(a|x)*ab",[trim]))),
<<"c::">> = iolist_to_binary(join(re:split("cab","(a|x)*ab",[{parts,
2}]))),
<<"c::">> = iolist_to_binary(join(re:split("cab","(a|x)*ab",[]))),
<<"c">> = iolist_to_binary(join(re:split("cab","(a)*ab",[trim]))),
<<"c::">> = iolist_to_binary(join(re:split("cab","(a)*ab",[{parts,
2}]))),
<<"c::">> = iolist_to_binary(join(re:split("cab","(a)*ab",[]))),
<<"">> = iolist_to_binary(join(re:split("ab","(?:(?i)a)b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?:(?i)a)b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?:(?i)a)b",[]))),
ok.
run27() ->
<<":a">> = iolist_to_binary(join(re:split("ab","((?i)a)b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","((?i)a)b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","((?i)a)b",[]))),
<<"">> = iolist_to_binary(join(re:split("Ab","(?:(?i)a)b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("Ab","(?:(?i)a)b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("Ab","(?:(?i)a)b",[]))),
<<":A">> = iolist_to_binary(join(re:split("Ab","((?i)a)b",[trim]))),
<<":A:">> = iolist_to_binary(join(re:split("Ab","((?i)a)b",[{parts,
2}]))),
<<":A:">> = iolist_to_binary(join(re:split("Ab","((?i)a)b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?i)a)b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?i)a)b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?i)a)b",[]))),
<<"cb">> = iolist_to_binary(join(re:split("cb","(?:(?i)a)b",[trim]))),
<<"cb">> = iolist_to_binary(join(re:split("cb","(?:(?i)a)b",[{parts,
2}]))),
<<"cb">> = iolist_to_binary(join(re:split("cb","(?:(?i)a)b",[]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?:(?i)a)b",[trim]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?:(?i)a)b",[{parts,
2}]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?:(?i)a)b",[]))),
<<"">> = iolist_to_binary(join(re:split("ab","(?i:a)b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?i:a)b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?i:a)b",[]))),
<<":a">> = iolist_to_binary(join(re:split("ab","((?i:a))b",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","((?i:a))b",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","((?i:a))b",[]))),
<<"">> = iolist_to_binary(join(re:split("Ab","(?i:a)b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("Ab","(?i:a)b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("Ab","(?i:a)b",[]))),
<<":A">> = iolist_to_binary(join(re:split("Ab","((?i:a))b",[trim]))),
<<":A:">> = iolist_to_binary(join(re:split("Ab","((?i:a))b",[{parts,
2}]))),
<<":A:">> = iolist_to_binary(join(re:split("Ab","((?i:a))b",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i:a)b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i:a)b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i:a)b",[]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[trim]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[{parts,
2}]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[trim]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[{parts,
2}]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?i:a)b",[]))),
<<"">> = iolist_to_binary(join(re:split("ab","(?:(?-i)a)b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?:(?-i)a)b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?:(?-i)a)b",[caseless]))),
<<":a">> = iolist_to_binary(join(re:split("ab","((?-i)a)b",[caseless,
trim]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","((?-i)a)b",[caseless,
{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","((?-i)a)b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless]))),
<<":a">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless,
trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless,
{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless,
trim]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless,
{parts,
2}]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?:(?-i)a)b",[caseless]))),
<<":a">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless,
trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless,
{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aB","((?-i)a)b",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?:(?-i)a)b",[caseless]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless,
trim]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless,
{parts,
2}]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?:(?-i)a)b",[caseless]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","(?:(?-i)a)b",[caseless,
trim]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","(?:(?-i)a)b",[caseless,
{parts,
2}]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","(?:(?-i)a)b",[caseless]))),
ok.
run28() ->
<<"">> = iolist_to_binary(join(re:split("ab","(?-i:a)b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?-i:a)b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?-i:a)b",[caseless]))),
<<":a">> = iolist_to_binary(join(re:split("ab","((?-i:a))b",[caseless,
trim]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","((?-i:a))b",[caseless,
{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("ab","((?-i:a))b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless]))),
<<":a">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless,
trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless,
{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless,
trim]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless,
{parts,
2}]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless,
trim]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless,
{parts,
2}]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aB","(?-i:a)b",[caseless]))),
<<":a">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless,
trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless,
{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aB","((?-i:a))b",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?-i:a)b",[caseless]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless,
trim]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless,
{parts,
2}]))),
<<"Ab">> = iolist_to_binary(join(re:split("Ab","(?-i:a)b",[caseless]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless,
trim]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless,
{parts,
2}]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","(?-i:a)b",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?-i:a.))b",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?-i:a.))b",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?-i:a.))b",[caseless]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","((?-i:a.))b",[caseless,
trim]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","((?-i:a.))b",[caseless,
{parts,
2}]))),
<<"AB">> = iolist_to_binary(join(re:split("AB","((?-i:a.))b",[caseless]))),
<<"a
B">> = iolist_to_binary(join(re:split("a
B","((?-i:a.))b",[caseless,trim]))),
<<"a
B">> = iolist_to_binary(join(re:split("a
B","((?-i:a.))b",[caseless,{parts,2}]))),
<<"a
B">> = iolist_to_binary(join(re:split("a
B","((?-i:a.))b",[caseless]))),
<<":a
">> = iolist_to_binary(join(re:split("a
B","((?s-i:a.))b",[caseless,trim]))),
<<":a
:">> = iolist_to_binary(join(re:split("a
B","((?s-i:a.))b",[caseless,{parts,2}]))),
<<":a
:">> = iolist_to_binary(join(re:split("a
B","((?s-i:a.))b",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("cabbbb","(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))",[trim]))),
<<":">> = iolist_to_binary(join(re:split("cabbbb","(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("cabbbb","(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))",[]))),
<<"">> = iolist_to_binary(join(re:split("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))",[trim]))),
<<":">> = iolist_to_binary(join(re:split("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))",[]))),
<<":Ab">> = iolist_to_binary(join(re:split("Ab4ab","(ab)\\d\\1",[caseless,
trim]))),
<<":Ab:">> = iolist_to_binary(join(re:split("Ab4ab","(ab)\\d\\1",[caseless,
{parts,
2}]))),
<<":Ab:">> = iolist_to_binary(join(re:split("Ab4ab","(ab)\\d\\1",[caseless]))),
<<":ab">> = iolist_to_binary(join(re:split("ab4Ab","(ab)\\d\\1",[caseless,
trim]))),
<<":ab:">> = iolist_to_binary(join(re:split("ab4Ab","(ab)\\d\\1",[caseless,
{parts,
2}]))),
<<":ab:">> = iolist_to_binary(join(re:split("ab4Ab","(ab)\\d\\1",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("foobar1234baz","foo\\w*\\d{4}baz",[trim]))),
<<":">> = iolist_to_binary(join(re:split("foobar1234baz","foo\\w*\\d{4}baz",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("foobar1234baz","foo\\w*\\d{4}baz",[]))),
<<":~~">> = iolist_to_binary(join(re:split("x~~","x(~~)*(?:(?:F)?)?",[trim]))),
<<":~~:">> = iolist_to_binary(join(re:split("x~~","x(~~)*(?:(?:F)?)?",[{parts,
2}]))),
<<":~~:">> = iolist_to_binary(join(re:split("x~~","x(~~)*(?:(?:F)?)?",[]))),
<<"">> = iolist_to_binary(join(re:split("aaac","^a(?#xxx){3}c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaac","^a(?#xxx){3}c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaac","^a(?#xxx){3}c",[]))),
<<"">> = iolist_to_binary(join(re:split("aaac","^a (?#xxx) (?#yyy) {3}c",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aaac","^a (?#xxx) (?#yyy) {3}c",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaac","^a (?#xxx) (?#yyy) {3}c",[extended]))),
ok.
run29() ->
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<![cd])b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<![cd])b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<![cd])b",[]))),
<<"B
B">> = iolist_to_binary(join(re:split("B
B","(?<![cd])b",[trim]))),
<<"B
B">> = iolist_to_binary(join(re:split("B
B","(?<![cd])b",[{parts,2}]))),
<<"B
B">> = iolist_to_binary(join(re:split("B
B","(?<![cd])b",[]))),
<<"dbcb">> = iolist_to_binary(join(re:split("dbcb","(?<![cd])b",[trim]))),
<<"dbcb">> = iolist_to_binary(join(re:split("dbcb","(?<![cd])b",[{parts,
2}]))),
<<"dbcb">> = iolist_to_binary(join(re:split("dbcb","(?<![cd])b",[]))),
<<"db::cb">> = iolist_to_binary(join(re:split("dbaacb","(?<![cd])[ab]",[trim]))),
<<"db:acb">> = iolist_to_binary(join(re:split("dbaacb","(?<![cd])[ab]",[{parts,
2}]))),
<<"db::cb">> = iolist_to_binary(join(re:split("dbaacb","(?<![cd])[ab]",[]))),
<<"db::::cb">> = iolist_to_binary(join(re:split("dbaacb","(?<!(c|d))[ab]",[trim]))),
<<"db::acb">> = iolist_to_binary(join(re:split("dbaacb","(?<!(c|d))[ab]",[{parts,
2}]))),
<<"db::::cb">> = iolist_to_binary(join(re:split("dbaacb","(?<!(c|d))[ab]",[]))),
<<"cdacc">> = iolist_to_binary(join(re:split("cdaccb","(?<!cd)[ab]",[trim]))),
<<"cdacc:">> = iolist_to_binary(join(re:split("cdaccb","(?<!cd)[ab]",[{parts,
2}]))),
<<"cdacc:">> = iolist_to_binary(join(re:split("cdaccb","(?<!cd)[ab]",[]))),
<<"">> = iolist_to_binary(join(re:split("","^(?:a?b?)*$",[trim]))),
<<"">> = iolist_to_binary(join(re:split("","^(?:a?b?)*$",[{parts,
2}]))),
<<"">> = iolist_to_binary(join(re:split("","^(?:a?b?)*$",[]))),
<<"">> = iolist_to_binary(join(re:split("a","^(?:a?b?)*$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","^(?:a?b?)*$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","^(?:a?b?)*$",[]))),
<<"">> = iolist_to_binary(join(re:split("ab","^(?:a?b?)*$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab","^(?:a?b?)*$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab","^(?:a?b?)*$",[]))),
<<"">> = iolist_to_binary(join(re:split("aaa","^(?:a?b?)*$",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaa","^(?:a?b?)*$",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaa","^(?:a?b?)*$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?:a?b?)*$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?:a?b?)*$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?:a?b?)*$",[]))),
<<"dbcb">> = iolist_to_binary(join(re:split("dbcb","^(?:a?b?)*$",[trim]))),
<<"dbcb">> = iolist_to_binary(join(re:split("dbcb","^(?:a?b?)*$",[{parts,
2}]))),
<<"dbcb">> = iolist_to_binary(join(re:split("dbcb","^(?:a?b?)*$",[]))),
<<"a--">> = iolist_to_binary(join(re:split("a--","^(?:a?b?)*$",[trim]))),
<<"a--">> = iolist_to_binary(join(re:split("a--","^(?:a?b?)*$",[{parts,
2}]))),
<<"a--">> = iolist_to_binary(join(re:split("a--","^(?:a?b?)*$",[]))),
<<"aa--">> = iolist_to_binary(join(re:split("aa--","^(?:a?b?)*$",[trim]))),
<<"aa--">> = iolist_to_binary(join(re:split("aa--","^(?:a?b?)*$",[{parts,
2}]))),
<<"aa--">> = iolist_to_binary(join(re:split("aa--","^(?:a?b?)*$",[]))),
<<":a
:
:b:
c">> = iolist_to_binary(join(re:split("a
b
c","((?s)^a(.))((?m)^b$)",[trim]))),
<<":a
:
:b:
c">> = iolist_to_binary(join(re:split("a
b
c","((?s)^a(.))((?m)^b$)",[{parts,2}]))),
<<":a
:
:b:
c">> = iolist_to_binary(join(re:split("a
b
c","((?s)^a(.))((?m)^b$)",[]))),
<<"a
:b:
c">> = iolist_to_binary(join(re:split("a
b
c","((?m)^b$)",[trim]))),
<<"a
:b:
c">> = iolist_to_binary(join(re:split("a
b
c","((?m)^b$)",[{parts,2}]))),
<<"a
:b:
c">> = iolist_to_binary(join(re:split("a
b
c","((?m)^b$)",[]))),
<<"a
">> = iolist_to_binary(join(re:split("a
b","(?m)^b",[trim]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
b","(?m)^b",[{parts,2}]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
b","(?m)^b",[]))),
<<"a
:b">> = iolist_to_binary(join(re:split("a
b","(?m)^(b)",[trim]))),
<<"a
:b:">> = iolist_to_binary(join(re:split("a
b","(?m)^(b)",[{parts,2}]))),
<<"a
:b:">> = iolist_to_binary(join(re:split("a
b","(?m)^(b)",[]))),
<<"a
:b">> = iolist_to_binary(join(re:split("a
b","((?m)^b)",[trim]))),
<<"a
:b:">> = iolist_to_binary(join(re:split("a
b","((?m)^b)",[{parts,2}]))),
<<"a
:b:">> = iolist_to_binary(join(re:split("a
b","((?m)^b)",[]))),
<<"a:b">> = iolist_to_binary(join(re:split("a
b","\\n((?m)^b)",[trim]))),
<<"a:b:">> = iolist_to_binary(join(re:split("a
b","\\n((?m)^b)",[{parts,2}]))),
<<"a:b:">> = iolist_to_binary(join(re:split("a
b","\\n((?m)^b)",[]))),
<<"a
b:
">> = iolist_to_binary(join(re:split("a
b
c","((?s).)c(?!.)",[trim]))),
<<"a
b:
:">> = iolist_to_binary(join(re:split("a
b
c","((?s).)c(?!.)",[{parts,2}]))),
<<"a
b:
:">> = iolist_to_binary(join(re:split("a
b
c","((?s).)c(?!.)",[]))),
<<"a
b:
">> = iolist_to_binary(join(re:split("a
b
c","((?s).)c(?!.)",[trim]))),
<<"a
b:
:">> = iolist_to_binary(join(re:split("a
b
c","((?s).)c(?!.)",[{parts,2}]))),
<<"a
b:
:">> = iolist_to_binary(join(re:split("a
b
c","((?s).)c(?!.)",[]))),
<<"a
:b
">> = iolist_to_binary(join(re:split("a
b
c","((?s)b.)c(?!.)",[trim]))),
<<"a
:b
:">> = iolist_to_binary(join(re:split("a
b
c","((?s)b.)c(?!.)",[{parts,2}]))),
<<"a
:b
:">> = iolist_to_binary(join(re:split("a
b
c","((?s)b.)c(?!.)",[]))),
<<"a
:b
">> = iolist_to_binary(join(re:split("a
b
c","((?s)b.)c(?!.)",[trim]))),
<<"a
:b
:">> = iolist_to_binary(join(re:split("a
b
c","((?s)b.)c(?!.)",[{parts,2}]))),
<<"a
:b
:">> = iolist_to_binary(join(re:split("a
b
c","((?s)b.)c(?!.)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","()^b",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","()^b",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","()^b",[]))),
<<"a
b
c">> = iolist_to_binary(join(re:split("a
b
c","()^b",[trim]))),
<<"a
b
c">> = iolist_to_binary(join(re:split("a
b
c","()^b",[{parts,2}]))),
<<"a
b
c">> = iolist_to_binary(join(re:split("a
b
c","()^b",[]))),
<<"a
b
c">> = iolist_to_binary(join(re:split("a
b
c","()^b",[trim]))),
<<"a
b
c">> = iolist_to_binary(join(re:split("a
b
c","()^b",[{parts,2}]))),
<<"a
b
c">> = iolist_to_binary(join(re:split("a
b
c","()^b",[]))),
<<"a
:b:
c">> = iolist_to_binary(join(re:split("a
b
c","((?m)^b)",[trim]))),
<<"a
:b:
c">> = iolist_to_binary(join(re:split("a
b
c","((?m)^b)",[{parts,2}]))),
<<"a
:b:
c">> = iolist_to_binary(join(re:split("a
b
c","((?m)^b)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(x)?(?(1)a|b)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(x)?(?(1)a|b)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(x)?(?(1)a|b)",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","(x)?(?(1)a|b)",[]))),
<<"">> = iolist_to_binary(join(re:split("a","(x)?(?(1)b|a)",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","(x)?(?(1)b|a)",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","(x)?(?(1)b|a)",[]))),
<<"">> = iolist_to_binary(join(re:split("a","()?(?(1)b|a)",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","()?(?(1)b|a)",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","()?(?(1)b|a)",[]))),
ok.
run30() ->
<<"">> = iolist_to_binary(join(re:split("a","()?(?(1)a|b)",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","()?(?(1)a|b)",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","()?(?(1)a|b)",[]))),
<<":(:)">> = iolist_to_binary(join(re:split("(blah)","^(\\()?blah(?(1)(\\)))$",[trim]))),
<<":(:):">> = iolist_to_binary(join(re:split("(blah)","^(\\()?blah(?(1)(\\)))$",[{parts,
2}]))),
<<":(:):">> = iolist_to_binary(join(re:split("(blah)","^(\\()?blah(?(1)(\\)))$",[]))),
<<"">> = iolist_to_binary(join(re:split("blah","^(\\()?blah(?(1)(\\)))$",[trim]))),
<<":::">> = iolist_to_binary(join(re:split("blah","^(\\()?blah(?(1)(\\)))$",[{parts,
2}]))),
<<":::">> = iolist_to_binary(join(re:split("blah","^(\\()?blah(?(1)(\\)))$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\()?blah(?(1)(\\)))$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\()?blah(?(1)(\\)))$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\()?blah(?(1)(\\)))$",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(\\()?blah(?(1)(\\)))$",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(\\()?blah(?(1)(\\)))$",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(\\()?blah(?(1)(\\)))$",[]))),
<<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\()?blah(?(1)(\\)))$",[trim]))),
<<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\()?blah(?(1)(\\)))$",[{parts,
2}]))),
<<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\()?blah(?(1)(\\)))$",[]))),
<<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\()?blah(?(1)(\\)))$",[trim]))),
<<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\()?blah(?(1)(\\)))$",[{parts,
2}]))),
<<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\()?blah(?(1)(\\)))$",[]))),
<<":(:)">> = iolist_to_binary(join(re:split("(blah)","^(\\(+)?blah(?(1)(\\)))$",[trim]))),
<<":(:):">> = iolist_to_binary(join(re:split("(blah)","^(\\(+)?blah(?(1)(\\)))$",[{parts,
2}]))),
<<":(:):">> = iolist_to_binary(join(re:split("(blah)","^(\\(+)?blah(?(1)(\\)))$",[]))),
<<"">> = iolist_to_binary(join(re:split("blah","^(\\(+)?blah(?(1)(\\)))$",[trim]))),
<<":::">> = iolist_to_binary(join(re:split("blah","^(\\(+)?blah(?(1)(\\)))$",[{parts,
2}]))),
<<":::">> = iolist_to_binary(join(re:split("blah","^(\\(+)?blah(?(1)(\\)))$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\(+)?blah(?(1)(\\)))$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\(+)?blah(?(1)(\\)))$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\(+)?blah(?(1)(\\)))$",[]))),
<<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\(+)?blah(?(1)(\\)))$",[trim]))),
<<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\(+)?blah(?(1)(\\)))$",[{parts,
2}]))),
<<"blah)">> = iolist_to_binary(join(re:split("blah)","^(\\(+)?blah(?(1)(\\)))$",[]))),
<<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\(+)?blah(?(1)(\\)))$",[trim]))),
<<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\(+)?blah(?(1)(\\)))$",[{parts,
2}]))),
<<"(blah">> = iolist_to_binary(join(re:split("(blah","^(\\(+)?blah(?(1)(\\)))$",[]))),
<<"">> = iolist_to_binary(join(re:split("a","(?(?!a)b|a)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","(?(?!a)b|a)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","(?(?!a)b|a)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?=a)b|a)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?=a)b|a)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?(?=a)b|a)",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","(?(?=a)b|a)",[]))),
<<"">> = iolist_to_binary(join(re:split("a","(?(?=a)a|b)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","(?(?=a)a|b)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","(?(?=a)a|b)",[]))),
<<"a:a:aab">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[trim]))),
<<"a:a:aab:">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[{parts,
2}]))),
<<"a:a:aab:">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[]))),
<<":one:">> = iolist_to_binary(join(re:split("one:","(\\w+:)+",[trim]))),
<<":one::">> = iolist_to_binary(join(re:split("one:","(\\w+:)+",[{parts,
2}]))),
<<":one::">> = iolist_to_binary(join(re:split("one:","(\\w+:)+",[]))),
<<"a:a">> = iolist_to_binary(join(re:split("a","$(?<=^(a))",[trim]))),
<<"a:a:">> = iolist_to_binary(join(re:split("a","$(?<=^(a))",[{parts,
2}]))),
<<"a:a:">> = iolist_to_binary(join(re:split("a","$(?<=^(a))",[]))),
<<"a:a:aab">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[trim]))),
<<"a:a:aab:">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[{parts,
2}]))),
<<"a:a:aab:">> = iolist_to_binary(join(re:split("aaab","(?=(a+?))(\\1ab)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?=(a+?))\\1ab",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?=(a+?))\\1ab",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?=(a+?))\\1ab",[]))),
<<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[trim]))),
<<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[{parts,
2}]))),
<<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[]))),
<<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[trim]))),
<<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[{parts,
2}]))),
<<"aaab">> = iolist_to_binary(join(re:split("aaab","^(?=(a+?))\\1ab",[]))),
<<"::abcd">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[trim]))),
<<"::abcd:">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[{parts,
2}]))),
<<"::abcd:">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[]))),
<<":xy:z::::abcd">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[trim]))),
<<":xy:z::::abcd:">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[{parts,
2}]))),
<<":xy:z::::abcd:">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[]))),
<<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[trim]))),
<<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[{parts,
2}]))),
<<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[]))),
<<"c:aa">> = iolist_to_binary(join(re:split("caab","(a*)b+",[trim]))),
<<"c:aa:">> = iolist_to_binary(join(re:split("caab","(a*)b+",[{parts,
2}]))),
<<"c:aa:">> = iolist_to_binary(join(re:split("caab","(a*)b+",[]))),
<<"::abcd">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[trim]))),
<<"::abcd:">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[{parts,
2}]))),
<<"::abcd:">> = iolist_to_binary(join(re:split("abcd","([\\w:]+::)?(\\w+)$",[]))),
<<":xy:z::::abcd">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[trim]))),
<<":xy:z::::abcd:">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[{parts,
2}]))),
<<":xy:z::::abcd:">> = iolist_to_binary(join(re:split("xy:z:::abcd","([\\w:]+::)?(\\w+)$",[]))),
<<"*** ::Failers">> = iolist_to_binary(join(re:split("*** Failers","([\\w:]+::)?(\\w+)$",[trim]))),
<<"*** ::Failers:">> = iolist_to_binary(join(re:split("*** Failers","([\\w:]+::)?(\\w+)$",[{parts,
2}]))),
<<"*** ::Failers:">> = iolist_to_binary(join(re:split("*** Failers","([\\w:]+::)?(\\w+)$",[]))),
<<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[trim]))),
<<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[{parts,
2}]))),
<<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[]))),
<<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[trim]))),
<<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[{parts,
2}]))),
<<"abcd:">> = iolist_to_binary(join(re:split("abcd:","([\\w:]+::)?(\\w+)$",[]))),
<<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[trim]))),
<<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[{parts,
2}]))),
<<":c:d">> = iolist_to_binary(join(re:split("aexycd","^[^bcd]*(c+)",[]))),
ok.
run31() ->
<<"">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaab","(?>a+)b",[]))),
<<"a::[:b]::">> = iolist_to_binary(join(re:split("a:[b]:","([[:]+)",[trim]))),
<<"a::[:b]:">> = iolist_to_binary(join(re:split("a:[b]:","([[:]+)",[{parts,
2}]))),
<<"a::[:b]:::">> = iolist_to_binary(join(re:split("a:[b]:","([[:]+)",[]))),
<<"a:=[:b]:=">> = iolist_to_binary(join(re:split("a=[b]=","([[=]+)",[trim]))),
<<"a:=[:b]=">> = iolist_to_binary(join(re:split("a=[b]=","([[=]+)",[{parts,
2}]))),
<<"a:=[:b]:=:">> = iolist_to_binary(join(re:split("a=[b]=","([[=]+)",[]))),
<<"a:.[:b]:.">> = iolist_to_binary(join(re:split("a.[b].","([[.]+)",[trim]))),
<<"a:.[:b].">> = iolist_to_binary(join(re:split("a.[b].","([[.]+)",[{parts,
2}]))),
<<"a:.[:b]:.:">> = iolist_to_binary(join(re:split("a.[b].","([[.]+)",[]))),
<<":aaab">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[trim]))),
<<":aaab:">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[{parts,
2}]))),
<<":aaab:">> = iolist_to_binary(join(re:split("aaab","((?>a+)b)",[]))),
<<":aaa">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[trim]))),
<<":aaa:">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[{parts,
2}]))),
<<":aaa:">> = iolist_to_binary(join(re:split("aaab","(?>(a+))b",[]))),
<<"((:x">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[trim]))),
<<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[{parts,
2}]))),
<<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","((?>[^()]+)|\\([^()]*\\))+",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Z",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Z",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a\\Z",[]))),
<<"aaab">> = iolist_to_binary(join(re:split("aaab","a\\Z",[trim]))),
<<"aaab">> = iolist_to_binary(join(re:split("aaab","a\\Z",[{parts,
2}]))),
<<"aaab">> = iolist_to_binary(join(re:split("aaab","a\\Z",[]))),
<<"a
b">> = iolist_to_binary(join(re:split("a
b","a\\Z",[trim]))),
<<"a
b">> = iolist_to_binary(join(re:split("a
b","a\\Z",[{parts,2}]))),
<<"a
b">> = iolist_to_binary(join(re:split("a
b","a\\Z",[]))),
<<"a
">> = iolist_to_binary(join(re:split("a
b","b\\Z",[trim]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
b","b\\Z",[{parts,2}]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
b","b\\Z",[]))),
<<"a
">> = iolist_to_binary(join(re:split("a
b","b\\Z",[trim]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
b","b\\Z",[{parts,2}]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
b","b\\Z",[]))),
<<"a
">> = iolist_to_binary(join(re:split("a
b","b\\z",[trim]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
b","b\\z",[{parts,2}]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
b","b\\z",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","b\\z",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","b\\z",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","b\\z",[]))),
<<"">> = iolist_to_binary(join(re:split("a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("abc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("abc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("a-b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a-b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a-b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("0-9","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("0-9","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("0-9","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("a.b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a.b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a.b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("5.6.7","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("5.6.7","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("5.6.7","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("the.quick.brown.fox","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("the.quick.brown.fox","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("the.quick.brown.fox","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("a100.b200.300c","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a100.b200.300c","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a100.b200.300c","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("12-ab.1245","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("12-ab.1245","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("12-ab.1245","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"">> = iolist_to_binary(join(re:split("","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"">> = iolist_to_binary(join(re:split("","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"">> = iolist_to_binary(join(re:split("","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<".a">> = iolist_to_binary(join(re:split(".a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<".a">> = iolist_to_binary(join(re:split(".a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<".a">> = iolist_to_binary(join(re:split(".a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"-a">> = iolist_to_binary(join(re:split("-a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"-a">> = iolist_to_binary(join(re:split("-a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"-a">> = iolist_to_binary(join(re:split("-a","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"a-">> = iolist_to_binary(join(re:split("a-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"a-">> = iolist_to_binary(join(re:split("a-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"a-">> = iolist_to_binary(join(re:split("a-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"a.">> = iolist_to_binary(join(re:split("a.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"a.">> = iolist_to_binary(join(re:split("a.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"a.">> = iolist_to_binary(join(re:split("a.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"a_b">> = iolist_to_binary(join(re:split("a_b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"a_b">> = iolist_to_binary(join(re:split("a_b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"a_b">> = iolist_to_binary(join(re:split("a_b","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"a.-">> = iolist_to_binary(join(re:split("a.-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"a.-">> = iolist_to_binary(join(re:split("a.-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"a.-">> = iolist_to_binary(join(re:split("a.-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"a..">> = iolist_to_binary(join(re:split("a..","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"a..">> = iolist_to_binary(join(re:split("a..","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"a..">> = iolist_to_binary(join(re:split("a..","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"ab..bc">> = iolist_to_binary(join(re:split("ab..bc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"ab..bc">> = iolist_to_binary(join(re:split("ab..bc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"ab..bc">> = iolist_to_binary(join(re:split("ab..bc","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"the.quick.brown.fox-">> = iolist_to_binary(join(re:split("the.quick.brown.fox-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"the.quick.brown.fox-">> = iolist_to_binary(join(re:split("the.quick.brown.fox-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"the.quick.brown.fox-">> = iolist_to_binary(join(re:split("the.quick.brown.fox-","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"the.quick.brown.fox.">> = iolist_to_binary(join(re:split("the.quick.brown.fox.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"the.quick.brown.fox.">> = iolist_to_binary(join(re:split("the.quick.brown.fox.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"the.quick.brown.fox.">> = iolist_to_binary(join(re:split("the.quick.brown.fox.","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"the.quick.brown.fox_">> = iolist_to_binary(join(re:split("the.quick.brown.fox_","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"the.quick.brown.fox_">> = iolist_to_binary(join(re:split("the.quick.brown.fox_","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"the.quick.brown.fox_">> = iolist_to_binary(join(re:split("the.quick.brown.fox_","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<"the.quick.brown.fox+">> = iolist_to_binary(join(re:split("the.quick.brown.fox+","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[trim]))),
<<"the.quick.brown.fox+">> = iolist_to_binary(join(re:split("the.quick.brown.fox+","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[{parts,
2}]))),
<<"the.quick.brown.fox+">> = iolist_to_binary(join(re:split("the.quick.brown.fox+","^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$",[]))),
<<":abcd">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*)(?<=(abcd|wxyz))",[trim]))),
<<":abcd:">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*)(?<=(abcd|wxyz))",[{parts,
2}]))),
<<":abcd:">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*)(?<=(abcd|wxyz))",[]))),
<<":wxyz">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*)(?<=(abcd|wxyz))",[trim]))),
<<":wxyz:">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*)(?<=(abcd|wxyz))",[{parts,
2}]))),
<<":wxyz:">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*)(?<=(abcd|wxyz))",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>.*)(?<=(abcd|wxyz))",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>.*)(?<=(abcd|wxyz))",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?>.*)(?<=(abcd|wxyz))",[]))),
<<"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]))),
<<"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}]))),
<<"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))",[]))),
<<"">> = 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]))),
<<":">> = 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}]))),
<<":">> = 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",[]))),
<<"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]))),
<<"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}]))),
<<"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",[]))),
<<"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]))),
<<"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}]))),
<<"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",[]))),
<<"999">> = iolist_to_binary(join(re:split("999foo","(?<=\\d{3}(?!999))foo",[trim]))),
<<"999:">> = iolist_to_binary(join(re:split("999foo","(?<=\\d{3}(?!999))foo",[{parts,
2}]))),
<<"999:">> = iolist_to_binary(join(re:split("999foo","(?<=\\d{3}(?!999))foo",[]))),
<<"123999">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999))foo",[trim]))),
<<"123999:">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999))foo",[{parts,
2}]))),
<<"123999:">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999))foo",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999))foo",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999))foo",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999))foo",[]))),
<<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999))foo",[trim]))),
<<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999))foo",[{parts,
2}]))),
<<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999))foo",[]))),
<<"999">> = iolist_to_binary(join(re:split("999foo","(?<=(?!...999)\\d{3})foo",[trim]))),
<<"999:">> = iolist_to_binary(join(re:split("999foo","(?<=(?!...999)\\d{3})foo",[{parts,
2}]))),
<<"999:">> = iolist_to_binary(join(re:split("999foo","(?<=(?!...999)\\d{3})foo",[]))),
<<"123999">> = iolist_to_binary(join(re:split("123999foo","(?<=(?!...999)\\d{3})foo",[trim]))),
<<"123999:">> = iolist_to_binary(join(re:split("123999foo","(?<=(?!...999)\\d{3})foo",[{parts,
2}]))),
<<"123999:">> = iolist_to_binary(join(re:split("123999foo","(?<=(?!...999)\\d{3})foo",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(?!...999)\\d{3})foo",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(?!...999)\\d{3})foo",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=(?!...999)\\d{3})foo",[]))),
<<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=(?!...999)\\d{3})foo",[trim]))),
<<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=(?!...999)\\d{3})foo",[{parts,
2}]))),
<<"123abcfoo">> = iolist_to_binary(join(re:split("123abcfoo","(?<=(?!...999)\\d{3})foo",[]))),
<<"123abc">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999)...)foo",[trim]))),
<<"123abc:">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999)...)foo",[{parts,
2}]))),
<<"123abc:">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}(?!999)...)foo",[]))),
<<"123456">> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}(?!999)...)foo",[trim]))),
<<"123456:">> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}(?!999)...)foo",[{parts,
2}]))),
<<"123456:">> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}(?!999)...)foo",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999)...)foo",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999)...)foo",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}(?!999)...)foo",[]))),
<<"123999foo">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999)...)foo",[trim]))),
<<"123999foo">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999)...)foo",[{parts,
2}]))),
<<"123999foo">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}(?!999)...)foo",[]))),
<<"123abc">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}...)(?<!999)foo",[trim]))),
<<"123abc:">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}...)(?<!999)foo",[{parts,
2}]))),
<<"123abc:">> = iolist_to_binary(join(re:split("123abcfoo","(?<=\\d{3}...)(?<!999)foo",[]))),
<<"123456">> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}...)(?<!999)foo",[trim]))),
<<"123456:">> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}...)(?<!999)foo",[{parts,
2}]))),
<<"123456:">> = iolist_to_binary(join(re:split("123456foo","(?<=\\d{3}...)(?<!999)foo",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}...)(?<!999)foo",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}...)(?<!999)foo",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?<=\\d{3}...)(?<!999)foo",[]))),
<<"123999foo">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}...)(?<!999)foo",[trim]))),
<<"123999foo">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}...)(?<!999)foo",[{parts,
2}]))),
<<"123999foo">> = iolist_to_binary(join(re:split("123999foo","(?<=\\d{3}...)(?<!999)foo",[]))),
ok.
run32() ->
<<":::abcd: xyz">> = iolist_to_binary(join(re:split("<a href=abcd xyz","<a[\\s]+href[\\s]*=[\\s]* # find <a href=
([\\\"\\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
trim]))),
<<":::abcd: xyz">> = iolist_to_binary(join(re:split("<a href=abcd xyz","<a[\\s]+href[\\s]*=[\\s]* # find <a href=
([\\\"\\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
{parts,
2}]))),
<<":::abcd: xyz">> = iolist_to_binary(join(re:split("<a href=abcd xyz","<a[\\s]+href[\\s]*=[\\s]* # find <a href=
([\\\"\\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended]))),
<<":\":abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href=\"abcd xyz pqr\" cats","<a[\\s]+href[\\s]*=[\\s]* # find <a href=
([\\\"\\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
trim]))),
<<":\":abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href=\"abcd xyz pqr\" cats","<a[\\s]+href[\\s]*=[\\s]* # find <a href=
([\\\"\\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
{parts,
2}]))),
<<":\":abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href=\"abcd xyz pqr\" cats","<a[\\s]+href[\\s]*=[\\s]* # find <a href=
([\\\"\\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended]))),
<<":':abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href='abcd xyz pqr' cats","<a[\\s]+href[\\s]*=[\\s]* # find <a href=
([\\\"\\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
trim]))),
<<":':abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href='abcd xyz pqr' cats","<a[\\s]+href[\\s]*=[\\s]* # find <a href=
([\\\"\\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
{parts,
2}]))),
<<":':abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href='abcd xyz pqr' cats","<a[\\s]+href[\\s]*=[\\s]* # find <a href=
([\\\"\\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended]))),
<<":::abcd: xyz">> = iolist_to_binary(join(re:split("<a href=abcd xyz","<a\\s+href\\s*=\\s* # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
trim]))),
<<":::abcd: xyz">> = iolist_to_binary(join(re:split("<a href=abcd xyz","<a\\s+href\\s*=\\s* # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
{parts,
2}]))),
<<":::abcd: xyz">> = iolist_to_binary(join(re:split("<a href=abcd xyz","<a\\s+href\\s*=\\s* # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended]))),
<<":\":abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href=\"abcd xyz pqr\" cats","<a\\s+href\\s*=\\s* # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
trim]))),
<<":\":abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href=\"abcd xyz pqr\" cats","<a\\s+href\\s*=\\s* # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
{parts,
2}]))),
<<":\":abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href=\"abcd xyz pqr\" cats","<a\\s+href\\s*=\\s* # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended]))),
<<":':abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href = 'abcd xyz pqr' cats","<a\\s+href\\s*=\\s* # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
trim]))),
<<":':abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href = 'abcd xyz pqr' cats","<a\\s+href\\s*=\\s* # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
{parts,
2}]))),
<<":':abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href = 'abcd xyz pqr' cats","<a\\s+href\\s*=\\s* # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended]))),
<<":::abcd: xyz">> = iolist_to_binary(join(re:split("<a href=abcd xyz","<a\\s+href(?>\\s*)=(?>\\s*) # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
trim]))),
<<":::abcd: xyz">> = iolist_to_binary(join(re:split("<a href=abcd xyz","<a\\s+href(?>\\s*)=(?>\\s*) # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
{parts,
2}]))),
<<":::abcd: xyz">> = iolist_to_binary(join(re:split("<a href=abcd xyz","<a\\s+href(?>\\s*)=(?>\\s*) # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended]))),
<<":\":abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href=\"abcd xyz pqr\" cats","<a\\s+href(?>\\s*)=(?>\\s*) # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
trim]))),
<<":\":abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href=\"abcd xyz pqr\" cats","<a\\s+href(?>\\s*)=(?>\\s*) # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
{parts,
2}]))),
<<":\":abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href=\"abcd xyz pqr\" cats","<a\\s+href(?>\\s*)=(?>\\s*) # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended]))),
<<":':abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href = 'abcd xyz pqr' cats","<a\\s+href(?>\\s*)=(?>\\s*) # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
trim]))),
<<":':abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href = 'abcd xyz pqr' cats","<a\\s+href(?>\\s*)=(?>\\s*) # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended,
{parts,
2}]))),
<<":':abcd xyz pqr:: cats">> = iolist_to_binary(join(re:split("<a href = 'abcd xyz pqr' cats","<a\\s+href(?>\\s*)=(?>\\s*) # find <a href=
([\"'])? # find single or double quote
(?(1) (.*?)\\1 | (\\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space",[caseless,
dotall,
extended]))),
<<":A:Z:B:::C:::D:::E:::F:::G">> = iolist_to_binary(join(re:split("ZABCDEFG","((Z)+|A)*",[trim]))),
<<":A:Z:BCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","((Z)+|A)*",[{parts,
2}]))),
<<":A:Z:B:::C:::D:::E:::F:::G:::">> = iolist_to_binary(join(re:split("ZABCDEFG","((Z)+|A)*",[]))),
<<":A::B:::C:::D:::E:::F:::G">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z()|A)*",[trim]))),
<<":A::BCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z()|A)*",[{parts,
2}]))),
<<":A::B:::C:::D:::E:::F:::G:::">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z()|A)*",[]))),
<<":A:::B::::C::::D::::E::::F::::G">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z(())|A)*",[trim]))),
<<":A:::BCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z(())|A)*",[{parts,
2}]))),
<<":A:::B::::C::::D::::E::::F::::G::::">> = iolist_to_binary(join(re:split("ZABCDEFG","(Z(())|A)*",[]))),
<<":A:B::C::D::E::F::G">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>Z)+|A)*",[trim]))),
<<":A:BCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>Z)+|A)*",[{parts,
2}]))),
<<":A:B::C::D::E::F::G::">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>Z)+|A)*",[]))),
<<"Z::::B::C::D::E::F::G">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>)+|A)*",[trim]))),
<<"Z::ABCDEFG">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>)+|A)*",[{parts,
2}]))),
<<"Z::::B::C::D::E::F::G::">> = iolist_to_binary(join(re:split("ZABCDEFG","((?>)+|A)*",[]))),
<<":b:b:b">> = iolist_to_binary(join(re:split("abbab","a*",[trim]))),
<<":bbab">> = iolist_to_binary(join(re:split("abbab","a*",[{parts,
2}]))),
<<":b:b:b:">> = iolist_to_binary(join(re:split("abbab","a*",[]))),
<<":bcde">> = iolist_to_binary(join(re:split("abcde","^[a-\\d]",[trim]))),
<<":bcde">> = iolist_to_binary(join(re:split("abcde","^[a-\\d]",[{parts,
2}]))),
<<":bcde">> = iolist_to_binary(join(re:split("abcde","^[a-\\d]",[]))),
<<":things">> = iolist_to_binary(join(re:split("-things","^[a-\\d]",[trim]))),
<<":things">> = iolist_to_binary(join(re:split("-things","^[a-\\d]",[{parts,
2}]))),
<<":things">> = iolist_to_binary(join(re:split("-things","^[a-\\d]",[]))),
<<":digit">> = iolist_to_binary(join(re:split("0digit","^[a-\\d]",[trim]))),
<<":digit">> = iolist_to_binary(join(re:split("0digit","^[a-\\d]",[{parts,
2}]))),
<<":digit">> = iolist_to_binary(join(re:split("0digit","^[a-\\d]",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-\\d]",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-\\d]",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[a-\\d]",[]))),
<<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[a-\\d]",[trim]))),
<<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[a-\\d]",[{parts,
2}]))),
<<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[a-\\d]",[]))),
<<":bcde">> = iolist_to_binary(join(re:split("abcde","^[\\d-a]",[trim]))),
<<":bcde">> = iolist_to_binary(join(re:split("abcde","^[\\d-a]",[{parts,
2}]))),
<<":bcde">> = iolist_to_binary(join(re:split("abcde","^[\\d-a]",[]))),
<<":things">> = iolist_to_binary(join(re:split("-things","^[\\d-a]",[trim]))),
<<":things">> = iolist_to_binary(join(re:split("-things","^[\\d-a]",[{parts,
2}]))),
<<":things">> = iolist_to_binary(join(re:split("-things","^[\\d-a]",[]))),
<<":digit">> = iolist_to_binary(join(re:split("0digit","^[\\d-a]",[trim]))),
<<":digit">> = iolist_to_binary(join(re:split("0digit","^[\\d-a]",[{parts,
2}]))),
<<":digit">> = iolist_to_binary(join(re:split("0digit","^[\\d-a]",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[\\d-a]",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[\\d-a]",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^[\\d-a]",[]))),
<<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[\\d-a]",[trim]))),
<<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[\\d-a]",[{parts,
2}]))),
<<"bcdef">> = iolist_to_binary(join(re:split("bcdef","^[\\d-a]",[]))),
<<">:<">> = iolist_to_binary(join(re:split(">
<","[[:space:]]+",[trim]))),
<<">:<">> = iolist_to_binary(join(re:split(">
<","[[:space:]]+",[{parts,2}]))),
<<">:<">> = iolist_to_binary(join(re:split(">
<","[[:space:]]+",[]))),
<<">:
<">> = iolist_to_binary(join(re:split(">
<","[[:blank:]]+",[trim]))),
<<">:
<">> = iolist_to_binary(join(re:split(">
<","[[:blank:]]+",[{parts,2}]))),
<<">:
<">> = iolist_to_binary(join(re:split(">
<","[[:blank:]]+",[]))),
<<">:<">> = iolist_to_binary(join(re:split(">
<","[\\s]+",[trim]))),
<<">:<">> = iolist_to_binary(join(re:split(">
<","[\\s]+",[{parts,2}]))),
<<">:<">> = iolist_to_binary(join(re:split(">
<","[\\s]+",[]))),
<<">:<">> = iolist_to_binary(join(re:split(">
<","\\s+",[trim]))),
<<">:<">> = iolist_to_binary(join(re:split(">
<","\\s+",[{parts,2}]))),
<<">:<">> = iolist_to_binary(join(re:split(">
<","\\s+",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","ab",[extended,
trim]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","ab",[extended,
{parts,
2}]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","ab",[extended]))),
<<"a
:b">> = iolist_to_binary(join(re:split("a
xb","(?!\\A)x",[multiline,trim]))),
<<"a
:b">> = iolist_to_binary(join(re:split("a
xb","(?!\\A)x",[multiline,{parts,2}]))),
<<"a
:b">> = iolist_to_binary(join(re:split("a
xb","(?!\\A)x",[multiline]))),
<<"a
xb">> = iolist_to_binary(join(re:split("a
xb","(?!^)x",[multiline,trim]))),
<<"a
xb">> = iolist_to_binary(join(re:split("a
xb","(?!^)x",[multiline,{parts,2}]))),
<<"a
xb">> = iolist_to_binary(join(re:split("a
xb","(?!^)x",[multiline]))),
<<"">> = iolist_to_binary(join(re:split("abcabcabc","abc\\Qabc\\Eabc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcabcabc","abc\\Qabc\\Eabc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcabcabc","abc\\Qabc\\Eabc",[]))),
<<"">> = iolist_to_binary(join(re:split("abc(*+|abc","abc\\Q(*+|\\Eabc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc(*+|abc","abc\\Q(*+|\\Eabc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc(*+|abc","abc\\Q(*+|\\Eabc",[]))),
ok.
run33() ->
<<"">> = iolist_to_binary(join(re:split("abc abcabc"," abc\\Q abc\\Eabc",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("abc abcabc"," abc\\Q abc\\Eabc",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc abcabc"," abc\\Q abc\\Eabc",[extended]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," abc\\Q abc\\Eabc",[extended,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," abc\\Q abc\\Eabc",[extended,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers"," abc\\Q abc\\Eabc",[extended]))),
<<"abcabcabc">> = iolist_to_binary(join(re:split("abcabcabc"," abc\\Q abc\\Eabc",[extended,
trim]))),
<<"abcabcabc">> = iolist_to_binary(join(re:split("abcabcabc"," abc\\Q abc\\Eabc",[extended,
{parts,
2}]))),
<<"abcabcabc">> = iolist_to_binary(join(re:split("abcabcabc"," abc\\Q abc\\Eabc",[extended]))),
<<"">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal\\E",[extended,trim]))),
<<":">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal\\E",[extended,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal\\E",[extended]))),
<<"">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal",[extended,trim]))),
<<":">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal",[extended,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal",[extended]))),
<<"">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal\\E #more comment
",[extended,trim]))),
<<":">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal\\E #more comment
",[extended,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal\\E #more comment
",[extended]))),
<<"">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal\\E #more comment",[extended,trim]))),
<<":">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal\\E #more comment",[extended,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("abc#not comment
literal","abc#comment
\\Q#not comment
literal\\E #more comment",[extended]))),
<<"">> = iolist_to_binary(join(re:split("abc\\$xyz","\\Qabc\\$xyz\\E",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc\\$xyz","\\Qabc\\$xyz\\E",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc\\$xyz","\\Qabc\\$xyz\\E",[]))),
<<"">> = iolist_to_binary(join(re:split("abc$xyz","\\Qabc\\E\\$\\Qxyz\\E",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc$xyz","\\Qabc\\E\\$\\Qxyz\\E",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc$xyz","\\Qabc\\E\\$\\Qxyz\\E",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","\\Aabc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","\\Aabc",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\Aabc",[]))),
<<"xyzabc">> = iolist_to_binary(join(re:split("xyzabc","\\Aabc",[trim]))),
<<"xyzabc">> = iolist_to_binary(join(re:split("xyzabc","\\Aabc",[{parts,
2}]))),
<<"xyzabc">> = iolist_to_binary(join(re:split("xyzabc","\\Aabc",[]))),
<<":abc2xyzabc3">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","\\Aabc.",[trim]))),
<<":abc2xyzabc3">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","\\Aabc.",[{parts,
2}]))),
<<":abc2xyzabc3">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","\\Aabc.",[]))),
<<"::xyz">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","abc.",[trim]))),
<<":abc2xyzabc3">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","abc.",[{parts,
2}]))),
<<"::xyz:">> = iolist_to_binary(join(re:split("abc1abc2xyzabc3","abc.",[]))),
<<"X:Y">> = iolist_to_binary(join(re:split("XabcdY","a(?x: b c )d",[trim]))),
<<"X:Y">> = iolist_to_binary(join(re:split("XabcdY","a(?x: b c )d",[{parts,
2}]))),
<<"X:Y">> = iolist_to_binary(join(re:split("XabcdY","a(?x: b c )d",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?x: b c )d",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?x: b c )d",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","a(?x: b c )d",[]))),
<<"Xa b c d Y">> = iolist_to_binary(join(re:split("Xa b c d Y","a(?x: b c )d",[trim]))),
<<"Xa b c d Y">> = iolist_to_binary(join(re:split("Xa b c d Y","a(?x: b c )d",[{parts,
2}]))),
<<"Xa b c d Y">> = iolist_to_binary(join(re:split("Xa b c d Y","a(?x: b c )d",[]))),
<<"X:abc:Y">> = iolist_to_binary(join(re:split("XabcY","((?x)x y z | a b c)",[trim]))),
<<"X:abc:Y">> = iolist_to_binary(join(re:split("XabcY","((?x)x y z | a b c)",[{parts,
2}]))),
<<"X:abc:Y">> = iolist_to_binary(join(re:split("XabcY","((?x)x y z | a b c)",[]))),
<<"A:xyz:B">> = iolist_to_binary(join(re:split("AxyzB","((?x)x y z | a b c)",[trim]))),
<<"A:xyz:B">> = iolist_to_binary(join(re:split("AxyzB","((?x)x y z | a b c)",[{parts,
2}]))),
<<"A:xyz:B">> = iolist_to_binary(join(re:split("AxyzB","((?x)x y z | a b c)",[]))),
<<"X:Y">> = iolist_to_binary(join(re:split("XabCY","(?i)AB(?-i)C",[trim]))),
<<"X:Y">> = iolist_to_binary(join(re:split("XabCY","(?i)AB(?-i)C",[{parts,
2}]))),
<<"X:Y">> = iolist_to_binary(join(re:split("XabCY","(?i)AB(?-i)C",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i)AB(?-i)C",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i)AB(?-i)C",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(?i)AB(?-i)C",[]))),
<<"XabcY">> = iolist_to_binary(join(re:split("XabcY","(?i)AB(?-i)C",[trim]))),
<<"XabcY">> = iolist_to_binary(join(re:split("XabcY","(?i)AB(?-i)C",[{parts,
2}]))),
<<"XabcY">> = iolist_to_binary(join(re:split("XabcY","(?i)AB(?-i)C",[]))),
<<":abC">> = iolist_to_binary(join(re:split("abCE","((?i)AB(?-i)C|D)E",[trim]))),
<<":abC:">> = iolist_to_binary(join(re:split("abCE","((?i)AB(?-i)C|D)E",[{parts,
2}]))),
<<":abC:">> = iolist_to_binary(join(re:split("abCE","((?i)AB(?-i)C|D)E",[]))),
<<":D">> = iolist_to_binary(join(re:split("DE","((?i)AB(?-i)C|D)E",[trim]))),
<<":D:">> = iolist_to_binary(join(re:split("DE","((?i)AB(?-i)C|D)E",[{parts,
2}]))),
<<":D:">> = iolist_to_binary(join(re:split("DE","((?i)AB(?-i)C|D)E",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)AB(?-i)C|D)E",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)AB(?-i)C|D)E",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((?i)AB(?-i)C|D)E",[]))),
<<"abcE">> = iolist_to_binary(join(re:split("abcE","((?i)AB(?-i)C|D)E",[trim]))),
<<"abcE">> = iolist_to_binary(join(re:split("abcE","((?i)AB(?-i)C|D)E",[{parts,
2}]))),
<<"abcE">> = iolist_to_binary(join(re:split("abcE","((?i)AB(?-i)C|D)E",[]))),
<<"abCe">> = iolist_to_binary(join(re:split("abCe","((?i)AB(?-i)C|D)E",[trim]))),
<<"abCe">> = iolist_to_binary(join(re:split("abCe","((?i)AB(?-i)C|D)E",[{parts,
2}]))),
<<"abCe">> = iolist_to_binary(join(re:split("abCe","((?i)AB(?-i)C|D)E",[]))),
<<"dE">> = iolist_to_binary(join(re:split("dE","((?i)AB(?-i)C|D)E",[trim]))),
<<"dE">> = iolist_to_binary(join(re:split("dE","((?i)AB(?-i)C|D)E",[{parts,
2}]))),
<<"dE">> = iolist_to_binary(join(re:split("dE","((?i)AB(?-i)C|D)E",[]))),
<<"De">> = iolist_to_binary(join(re:split("De","((?i)AB(?-i)C|D)E",[trim]))),
<<"De">> = iolist_to_binary(join(re:split("De","((?i)AB(?-i)C|D)E",[{parts,
2}]))),
<<"De">> = iolist_to_binary(join(re:split("De","((?i)AB(?-i)C|D)E",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[]))),
<<"a:bc">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[trim]))),
<<"a:bc:">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[{parts,
2}]))),
<<"a:bc:">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[dotall,
trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[dotall,
{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abc123abc","(.*)\\d+\\1",[dotall]))),
<<"a:bc">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[dotall,
trim]))),
<<"a:bc:">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[dotall,
{parts,
2}]))),
<<"a:bc:">> = iolist_to_binary(join(re:split("abc123bc","(.*)\\d+\\1",[dotall]))),
<<":abc:abc">> = iolist_to_binary(join(re:split("abc123abc","((.*))\\d+\\1",[trim]))),
<<":abc:abc:">> = iolist_to_binary(join(re:split("abc123abc","((.*))\\d+\\1",[{parts,
2}]))),
<<":abc:abc:">> = iolist_to_binary(join(re:split("abc123abc","((.*))\\d+\\1",[]))),
<<"a:bc:bc">> = iolist_to_binary(join(re:split("abc123bc","((.*))\\d+\\1",[trim]))),
<<"a:bc:bc:">> = iolist_to_binary(join(re:split("abc123bc","((.*))\\d+\\1",[{parts,
2}]))),
<<"a:bc:bc:">> = iolist_to_binary(join(re:split("abc123bc","((.*))\\d+\\1",[]))),
<<"">> = 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]))),
<<"::">> = 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}]))),
<<"::">> = 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]))),
<<"">> = 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]))),
<<"::">> = 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}]))),
<<"::">> = 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]))),
<<"">> = 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]))),
<<"::">> = 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}]))),
<<"::">> = 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]))),
<<"">> = 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]))),
<<"::">> = 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}]))),
<<"::">> = 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]))),
<<"">> = 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]))),
<<"::">> = 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}]))),
<<"::">> = 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]))),
<<"">> = 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]))),
<<"::">> = 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}]))),
<<"::">> = 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]))),
<<"*** 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]))),
<<"*** 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}]))),
<<"*** 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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"::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]))),
<<"::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}]))),
<<"::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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<":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]))),
<<":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}]))),
<<":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]))),
<<"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]))),
<<"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}]))),
<<"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]))),
<<"">> = iolist_to_binary(join(re:split("z","[z\\Qa-d]\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("z","[z\\Qa-d]\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("z","[z\\Qa-d]\\E]",[]))),
<<"">> = iolist_to_binary(join(re:split("a","[z\\Qa-d]\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","[z\\Qa-d]\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","[z\\Qa-d]\\E]",[]))),
<<"">> = iolist_to_binary(join(re:split("-","[z\\Qa-d]\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","[z\\Qa-d]\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","[z\\Qa-d]\\E]",[]))),
<<"">> = iolist_to_binary(join(re:split("d","[z\\Qa-d]\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("d","[z\\Qa-d]\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("d","[z\\Qa-d]\\E]",[]))),
<<"">> = iolist_to_binary(join(re:split("]","[z\\Qa-d]\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("]","[z\\Qa-d]\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("]","[z\\Qa-d]\\E]",[]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[z\\Qa-d]\\E]",[trim]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[z\\Qa-d]\\E]",[{parts,
2}]))),
<<"*** F:ilers">> = iolist_to_binary(join(re:split("*** Failers","[z\\Qa-d]\\E]",[]))),
<<"b">> = iolist_to_binary(join(re:split("b","[z\\Qa-d]\\E]",[trim]))),
<<"b">> = iolist_to_binary(join(re:split("b","[z\\Qa-d]\\E]",[{parts,
2}]))),
<<"b">> = iolist_to_binary(join(re:split("b","[z\\Qa-d]\\E]",[]))),
ok.
run34() ->
<<"">> = iolist_to_binary(join(re:split("z","[\\z\\C]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("z","[\\z\\C]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("z","[\\z\\C]",[]))),
<<"">> = iolist_to_binary(join(re:split("C","[\\z\\C]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("C","[\\z\\C]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("C","[\\z\\C]",[]))),
<<"">> = iolist_to_binary(join(re:split("M","\\M",[trim]))),
<<":">> = iolist_to_binary(join(re:split("M","\\M",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("M","\\M",[]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a+)*b",[trim]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a+)*b",[{parts,
2}]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a+)*b",[]))),
<<"XAZ">> = iolist_to_binary(join(re:split("XAZXB","(?<=Z)X.",[trim]))),
<<"XAZ:">> = iolist_to_binary(join(re:split("XAZXB","(?<=Z)X.",[{parts,
2}]))),
<<"XAZ:">> = iolist_to_binary(join(re:split("XAZXB","(?<=Z)X.",[]))),
<<"">> = iolist_to_binary(join(re:split("ab cd defg","ab cd (?x) de fg",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab cd defg","ab cd (?x) de fg",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab cd defg","ab cd (?x) de fg",[]))),
<<"">> = iolist_to_binary(join(re:split("ab cddefg","ab cd(?x) de fg",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab cddefg","ab cd(?x) de fg",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab cddefg","ab cd(?x) de fg",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","ab cd(?x) de fg",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","ab cd(?x) de fg",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","ab cd(?x) de fg",[]))),
<<"abcddefg">> = iolist_to_binary(join(re:split("abcddefg","ab cd(?x) de fg",[trim]))),
<<"abcddefg">> = iolist_to_binary(join(re:split("abcddefg","ab cd(?x) de fg",[{parts,
2}]))),
<<"abcddefg">> = iolist_to_binary(join(re:split("abcddefg","ab cd(?x) de fg",[]))),
<<"foo:bar:X">> = iolist_to_binary(join(re:split("foobarX","(?<![^f]oo)(bar)",[trim]))),
<<"foo:bar:X">> = iolist_to_binary(join(re:split("foobarX","(?<![^f]oo)(bar)",[{parts,
2}]))),
<<"foo:bar:X">> = iolist_to_binary(join(re:split("foobarX","(?<![^f]oo)(bar)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<![^f]oo)(bar)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<![^f]oo)(bar)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<![^f]oo)(bar)",[]))),
<<"boobarX">> = iolist_to_binary(join(re:split("boobarX","(?<![^f]oo)(bar)",[trim]))),
<<"boobarX">> = iolist_to_binary(join(re:split("boobarX","(?<![^f]oo)(bar)",[{parts,
2}]))),
<<"boobarX">> = iolist_to_binary(join(re:split("boobarX","(?<![^f]oo)(bar)",[]))),
<<"off">> = iolist_to_binary(join(re:split("offX","(?<![^f])X",[trim]))),
<<"off:">> = iolist_to_binary(join(re:split("offX","(?<![^f])X",[{parts,
2}]))),
<<"off:">> = iolist_to_binary(join(re:split("offX","(?<![^f])X",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<![^f])X",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<![^f])X",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<![^f])X",[]))),
<<"onyX">> = iolist_to_binary(join(re:split("onyX","(?<![^f])X",[trim]))),
<<"onyX">> = iolist_to_binary(join(re:split("onyX","(?<![^f])X",[{parts,
2}]))),
<<"onyX">> = iolist_to_binary(join(re:split("onyX","(?<![^f])X",[]))),
<<"ony">> = iolist_to_binary(join(re:split("onyX","(?<=[^f])X",[trim]))),
<<"ony:">> = iolist_to_binary(join(re:split("onyX","(?<=[^f])X",[{parts,
2}]))),
<<"ony:">> = iolist_to_binary(join(re:split("onyX","(?<=[^f])X",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^f])X",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^f])X",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^f])X",[]))),
<<"offX">> = iolist_to_binary(join(re:split("offX","(?<=[^f])X",[trim]))),
<<"offX">> = iolist_to_binary(join(re:split("offX","(?<=[^f])X",[{parts,
2}]))),
<<"offX">> = iolist_to_binary(join(re:split("offX","(?<=[^f])X",[]))),
<<"a
:b
:c">> = iolist_to_binary(join(re:split("a
b
c","^",[multiline,trim]))),
<<"a
:b
c">> = iolist_to_binary(join(re:split("a
b
c","^",[multiline,{parts,2}]))),
<<"a
:b
:c">> = iolist_to_binary(join(re:split("a
b
c","^",[multiline]))),
<<"">> = iolist_to_binary(join(re:split("","^",[multiline,
trim]))),
<<"">> = iolist_to_binary(join(re:split("","^",[multiline,
{parts,
2}]))),
<<"">> = iolist_to_binary(join(re:split("","^",[multiline]))),
<<"A
C
:C">> = iolist_to_binary(join(re:split("A
C
C","(?<=C\\n)^",[multiline,trim]))),
<<"A
C
:C">> = iolist_to_binary(join(re:split("A
C
C","(?<=C\\n)^",[multiline,{parts,2}]))),
<<"A
C
:C">> = iolist_to_binary(join(re:split("A
C
C","(?<=C\\n)^",[multiline]))),
<<":X">> = iolist_to_binary(join(re:split("bXaX","(?:(?(1)a|b)(X))+",[trim]))),
<<":X:">> = iolist_to_binary(join(re:split("bXaX","(?:(?(1)a|b)(X))+",[{parts,
2}]))),
<<":X:">> = iolist_to_binary(join(re:split("bXaX","(?:(?(1)a|b)(X))+",[]))),
<<":Y">> = iolist_to_binary(join(re:split("bXXaYYaY","(?:(?(1)\\1a|b)(X|Y))+",[trim]))),
<<":Y:">> = iolist_to_binary(join(re:split("bXXaYYaY","(?:(?(1)\\1a|b)(X|Y))+",[{parts,
2}]))),
<<":Y:">> = iolist_to_binary(join(re:split("bXXaYYaY","(?:(?(1)\\1a|b)(X|Y))+",[]))),
<<":X:YaXXaX">> = iolist_to_binary(join(re:split("bXYaXXaX","(?:(?(1)\\1a|b)(X|Y))+",[trim]))),
<<":X:YaXXaX">> = iolist_to_binary(join(re:split("bXYaXXaX","(?:(?(1)\\1a|b)(X|Y))+",[{parts,
2}]))),
<<":X:YaXXaX">> = iolist_to_binary(join(re:split("bXYaXXaX","(?:(?(1)\\1a|b)(X|Y))+",[]))),
<<"::::::::::X:XaYYaY">> = iolist_to_binary(join(re:split("bXXaYYaY","()()()()()()()()()(?:(?(10)\\10a|b)(X|Y))+",[trim]))),
<<"::::::::::X:XaYYaY">> = iolist_to_binary(join(re:split("bXXaYYaY","()()()()()()()()()(?:(?(10)\\10a|b)(X|Y))+",[{parts,
2}]))),
<<"::::::::::X:XaYYaY">> = iolist_to_binary(join(re:split("bXXaYYaY","()()()()()()()()()(?:(?(10)\\10a|b)(X|Y))+",[]))),
<<"">> = iolist_to_binary(join(re:split("abc]","[[,abc,]+]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc]","[[,abc,]+]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc]","[[,abc,]+]",[]))),
<<"">> = iolist_to_binary(join(re:split("a,b]","[[,abc,]+]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a,b]","[[,abc,]+]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a,b]","[[,abc,]+]",[]))),
<<"">> = iolist_to_binary(join(re:split("[a,b,c]","[[,abc,]+]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("[a,b,c]","[[,abc,]+]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("[a,b,c]","[[,abc,]+]",[]))),
<<"A:B">> = iolist_to_binary(join(re:split("A B","(?-x: )",[extended,
trim]))),
<<"A:B">> = iolist_to_binary(join(re:split("A B","(?-x: )",[extended,
{parts,
2}]))),
<<"A:B">> = iolist_to_binary(join(re:split("A B","(?-x: )",[extended]))),
<<"A:B">> = iolist_to_binary(join(re:split("A # B","(?x)(?-x: \\s*#\\s*)",[trim]))),
<<"A:B">> = iolist_to_binary(join(re:split("A # B","(?x)(?-x: \\s*#\\s*)",[{parts,
2}]))),
<<"A:B">> = iolist_to_binary(join(re:split("A # B","(?x)(?-x: \\s*#\\s*)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x)(?-x: \\s*#\\s*)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x)(?-x: \\s*#\\s*)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x)(?-x: \\s*#\\s*)",[]))),
<<"#">> = iolist_to_binary(join(re:split("#","(?x)(?-x: \\s*#\\s*)",[trim]))),
<<"#">> = iolist_to_binary(join(re:split("#","(?x)(?-x: \\s*#\\s*)",[{parts,
2}]))),
<<"#">> = iolist_to_binary(join(re:split("#","(?x)(?-x: \\s*#\\s*)",[]))),
<<"A">> = iolist_to_binary(join(re:split("A #include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[trim]))),
<<"A:">> = iolist_to_binary(join(re:split("A #include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[{parts,
2}]))),
<<"A:">> = iolist_to_binary(join(re:split("A #include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[]))),
<<"A#include">> = iolist_to_binary(join(re:split("A#include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[trim]))),
<<"A#include">> = iolist_to_binary(join(re:split("A#include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[{parts,
2}]))),
<<"A#include">> = iolist_to_binary(join(re:split("A#include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[]))),
<<"A #Include">> = iolist_to_binary(join(re:split("A #Include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[trim]))),
<<"A #Include">> = iolist_to_binary(join(re:split("A #Include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[{parts,
2}]))),
<<"A #Include">> = iolist_to_binary(join(re:split("A #Include","(?x-is)(?:(?-ixs) \\s*#\\s*) include",[]))),
ok.
run35() ->
<<"">> = iolist_to_binary(join(re:split("aaabbbb","a*b*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","a*b*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","a*b*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","a*b*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("a","a*b*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabbbb","a*b?\\w",[trim]))),
<<":bb">> = iolist_to_binary(join(re:split("aaabbbb","a*b?\\w",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aaabbbb","a*b?\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","a*b?\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","a*b?\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","a*b?\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("a","a*b?\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b?\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b?\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,4}\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,4}\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,4}\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","a*b{0,4}\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","a*b{0,4}\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","a*b{0,4}\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("a","a*b{0,4}\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b{0,4}\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b{0,4}\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,}\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,}\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaabbbb","a*b{0,}\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","a*b{0,}\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","a*b{0,}\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","a*b{0,}\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("a","a*b{0,}\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b{0,}\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b{0,}\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("0a","a*\\d*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("0a","a*\\d*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("0a","a*\\d*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("a","a*\\d*\\w",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","a*\\d*\\w",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","a*\\d*\\w",[]))),
<<"">> = iolist_to_binary(join(re:split("a","a*b *\\w",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b *\\w",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b *\\w",[extended]))),
<<"">> = iolist_to_binary(join(re:split("a","a*b#comment
*\\w",[extended,trim]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b#comment
*\\w",[extended,{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("a","a*b#comment
*\\w",[extended]))),
<<"">> = iolist_to_binary(join(re:split("a","a* b *\\w",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("a","a* b *\\w",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","a* b *\\w",[extended]))),
<<"::
pqr">> = iolist_to_binary(join(re:split("abc=xyz\\
pqr","^\\w+=.*(\\\\\\n.*)*",[trim]))),
<<"::
pqr">> = iolist_to_binary(join(re:split("abc=xyz\\
pqr","^\\w+=.*(\\\\\\n.*)*",[{parts,2}]))),
<<"::
pqr">> = iolist_to_binary(join(re:split("abc=xyz\\
pqr","^\\w+=.*(\\\\\\n.*)*",[]))),
<<":abcd">> = iolist_to_binary(join(re:split("abcd:","(?=(\\w+))\\1:",[trim]))),
<<":abcd:">> = iolist_to_binary(join(re:split("abcd:","(?=(\\w+))\\1:",[{parts,
2}]))),
<<":abcd:">> = iolist_to_binary(join(re:split("abcd:","(?=(\\w+))\\1:",[]))),
<<":abcd">> = iolist_to_binary(join(re:split("abcd:","^(?=(\\w+))\\1:",[trim]))),
<<":abcd:">> = iolist_to_binary(join(re:split("abcd:","^(?=(\\w+))\\1:",[{parts,
2}]))),
<<":abcd:">> = iolist_to_binary(join(re:split("abcd:","^(?=(\\w+))\\1:",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","^\\Eabc",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","^\\Eabc",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","^\\Eabc",[]))),
<<"">> = iolist_to_binary(join(re:split("a","^[\\Eabc]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","^[\\Eabc]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","^[\\Eabc]",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\Eabc]",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\Eabc]",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\Eabc]",[]))),
<<"E">> = iolist_to_binary(join(re:split("E","^[\\Eabc]",[trim]))),
<<"E">> = iolist_to_binary(join(re:split("E","^[\\Eabc]",[{parts,
2}]))),
<<"E">> = iolist_to_binary(join(re:split("E","^[\\Eabc]",[]))),
<<"">> = iolist_to_binary(join(re:split("b","^[a-\\Ec]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("b","^[a-\\Ec]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("b","^[a-\\Ec]",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a-\\Ec]",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a-\\Ec]",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a-\\Ec]",[]))),
<<"-">> = iolist_to_binary(join(re:split("-","^[a-\\Ec]",[trim]))),
<<"-">> = iolist_to_binary(join(re:split("-","^[a-\\Ec]",[{parts,
2}]))),
<<"-">> = iolist_to_binary(join(re:split("-","^[a-\\Ec]",[]))),
<<"E">> = iolist_to_binary(join(re:split("E","^[a-\\Ec]",[trim]))),
<<"E">> = iolist_to_binary(join(re:split("E","^[a-\\Ec]",[{parts,
2}]))),
<<"E">> = iolist_to_binary(join(re:split("E","^[a-\\Ec]",[]))),
<<"">> = iolist_to_binary(join(re:split("b","^[a\\E\\E-\\Ec]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("b","^[a\\E\\E-\\Ec]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("b","^[a\\E\\E-\\Ec]",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a\\E\\E-\\Ec]",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a\\E\\E-\\Ec]",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[a\\E\\E-\\Ec]",[]))),
<<"-">> = iolist_to_binary(join(re:split("-","^[a\\E\\E-\\Ec]",[trim]))),
<<"-">> = iolist_to_binary(join(re:split("-","^[a\\E\\E-\\Ec]",[{parts,
2}]))),
<<"-">> = iolist_to_binary(join(re:split("-","^[a\\E\\E-\\Ec]",[]))),
<<"E">> = iolist_to_binary(join(re:split("E","^[a\\E\\E-\\Ec]",[trim]))),
<<"E">> = iolist_to_binary(join(re:split("E","^[a\\E\\E-\\Ec]",[{parts,
2}]))),
<<"E">> = iolist_to_binary(join(re:split("E","^[a\\E\\E-\\Ec]",[]))),
<<"">> = iolist_to_binary(join(re:split("b","^[\\E\\Qa\\E-\\Qz\\E]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("b","^[\\E\\Qa\\E-\\Qz\\E]+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("b","^[\\E\\Qa\\E-\\Qz\\E]+",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\E\\Qa\\E-\\Qz\\E]+",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\E\\Qa\\E-\\Qz\\E]+",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\E\\Qa\\E-\\Qz\\E]+",[]))),
<<"-">> = iolist_to_binary(join(re:split("-","^[\\E\\Qa\\E-\\Qz\\E]+",[trim]))),
<<"-">> = iolist_to_binary(join(re:split("-","^[\\E\\Qa\\E-\\Qz\\E]+",[{parts,
2}]))),
<<"-">> = iolist_to_binary(join(re:split("-","^[\\E\\Qa\\E-\\Qz\\E]+",[]))),
<<"">> = iolist_to_binary(join(re:split("a","^[a\\Q]bc\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","^[a\\Q]bc\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","^[a\\Q]bc\\E]",[]))),
<<"">> = iolist_to_binary(join(re:split("]","^[a\\Q]bc\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("]","^[a\\Q]bc\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("]","^[a\\Q]bc\\E]",[]))),
<<"">> = iolist_to_binary(join(re:split("c","^[a\\Q]bc\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("c","^[a\\Q]bc\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("c","^[a\\Q]bc\\E]",[]))),
<<"">> = iolist_to_binary(join(re:split("a","^[a-\\Q\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","^[a-\\Q\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","^[a-\\Q\\E]",[]))),
<<"">> = iolist_to_binary(join(re:split("-","^[a-\\Q\\E]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("-","^[a-\\Q\\E]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("-","^[a-\\Q\\E]",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaa","^(a()*)*",[trim]))),
<<":a::">> = iolist_to_binary(join(re:split("aaaa","^(a()*)*",[{parts,
2}]))),
<<":a::">> = iolist_to_binary(join(re:split("aaaa","^(a()*)*",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))*)*",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))*)*",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))*)*",[]))),
ok.
run36() ->
<<":a">> = iolist_to_binary(join(re:split("aaaa","^(a()+)+",[trim]))),
<<":a::">> = iolist_to_binary(join(re:split("aaaa","^(a()+)+",[{parts,
2}]))),
<<":a::">> = iolist_to_binary(join(re:split("aaaa","^(a()+)+",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))+)+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))+)+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^(?:a(?:(?:))+)+",[]))),
<<":a">> = iolist_to_binary(join(re:split("abbD","(a){0,3}(?(1)b|(c|))*D",[trim]))),
<<":a::">> = iolist_to_binary(join(re:split("abbD","(a){0,3}(?(1)b|(c|))*D",[{parts,
2}]))),
<<":a::">> = iolist_to_binary(join(re:split("abbD","(a){0,3}(?(1)b|(c|))*D",[]))),
<<"">> = iolist_to_binary(join(re:split("ccccD","(a){0,3}(?(1)b|(c|))*D",[trim]))),
<<":::">> = iolist_to_binary(join(re:split("ccccD","(a){0,3}(?(1)b|(c|))*D",[{parts,
2}]))),
<<":::">> = iolist_to_binary(join(re:split("ccccD","(a){0,3}(?(1)b|(c|))*D",[]))),
<<"">> = iolist_to_binary(join(re:split("D","(a){0,3}(?(1)b|(c|))*D",[trim]))),
<<":::">> = iolist_to_binary(join(re:split("D","(a){0,3}(?(1)b|(c|))*D",[{parts,
2}]))),
<<":::">> = iolist_to_binary(join(re:split("D","(a){0,3}(?(1)b|(c|))*D",[]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a|)*\\d",[trim]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a|)*\\d",[{parts,
2}]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(a|)*\\d",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(a|)*\\d",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(a|)*\\d",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(a|)*\\d",[]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?>a|)*\\d",[trim]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?>a|)*\\d",[{parts,
2}]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?>a|)*\\d",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?>a|)*\\d",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?>a|)*\\d",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?>a|)*\\d",[]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?:a|)*\\d",[trim]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?:a|)*\\d",[{parts,
2}]))),
<<"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","(?:a|)*\\d",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?:a|)*\\d",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?:a|)*\\d",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4","(?:a|)*\\d",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","\\Z",[trim]))),
<<"abc:">> = iolist_to_binary(join(re:split("abc","\\Z",[{parts,
2}]))),
<<"abc:">> = iolist_to_binary(join(re:split("abc","\\Z",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?<!\\n)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?<!\\n)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?<!\\n)",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?<!\\n)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?<!\\n)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","^(?s)(?>.*)(?<!\\n)",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","^(?![^\\n]*\\n\\z)",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","\\z(?<!\\n)",[trim]))),
<<"abc:">> = iolist_to_binary(join(re:split("abc","\\z(?<!\\n)",[{parts,
2}]))),
<<"abc:">> = iolist_to_binary(join(re:split("abc","\\z(?<!\\n)",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","\\z(?<!\\n)",[trim]))),
<<"abc:">> = iolist_to_binary(join(re:split("abc","\\z(?<!\\n)",[{parts,
2}]))),
<<"abc:">> = iolist_to_binary(join(re:split("abc","\\z(?<!\\n)",[]))),
<<"">> = iolist_to_binary(join(re:split("abcd","(.*(.)?)*",[trim]))),
<<":::">> = iolist_to_binary(join(re:split("abcd","(.*(.)?)*",[{parts,
2}]))),
<<":::">> = iolist_to_binary(join(re:split("abcd","(.*(.)?)*",[]))),
<<"a:::b:::c:::d">> = iolist_to_binary(join(re:split("abcd","( (A | (?(1)0|) )* )",[extended,
trim]))),
<<"a:::bcd">> = iolist_to_binary(join(re:split("abcd","( (A | (?(1)0|) )* )",[extended,
{parts,
2}]))),
<<"a:::b:::c:::d:::">> = iolist_to_binary(join(re:split("abcd","( (A | (?(1)0|) )* )",[extended]))),
<<"a:::b:::c:::d">> = iolist_to_binary(join(re:split("abcd","( ( (?(1)0|) )* )",[extended,
trim]))),
<<"a:::bcd">> = iolist_to_binary(join(re:split("abcd","( ( (?(1)0|) )* )",[extended,
{parts,
2}]))),
<<"a:::b:::c:::d:::">> = iolist_to_binary(join(re:split("abcd","( ( (?(1)0|) )* )",[extended]))),
<<"a::b::c::d">> = iolist_to_binary(join(re:split("abcd","( (?(1)0|)* )",[extended,
trim]))),
<<"a::bcd">> = iolist_to_binary(join(re:split("abcd","( (?(1)0|)* )",[extended,
{parts,
2}]))),
<<"a::b::c::d::">> = iolist_to_binary(join(re:split("abcd","( (?(1)0|)* )",[extended]))),
<<"">> = iolist_to_binary(join(re:split("a]","[[:abcd:xyz]]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a]","[[:abcd:xyz]]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a]","[[:abcd:xyz]]",[]))),
<<"">> = iolist_to_binary(join(re:split(":]","[[:abcd:xyz]]",[trim]))),
<<":">> = iolist_to_binary(join(re:split(":]","[[:abcd:xyz]]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split(":]","[[:abcd:xyz]]",[]))),
<<"">> = iolist_to_binary(join(re:split("a","[abc[:x\\]pqr]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("a","[abc[:x\\]pqr]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("a","[abc[:x\\]pqr]",[]))),
<<"">> = iolist_to_binary(join(re:split("[","[abc[:x\\]pqr]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("[","[abc[:x\\]pqr]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("[","[abc[:x\\]pqr]",[]))),
<<"">> = iolist_to_binary(join(re:split(":","[abc[:x\\]pqr]",[trim]))),
<<":">> = iolist_to_binary(join(re:split(":","[abc[:x\\]pqr]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split(":","[abc[:x\\]pqr]",[]))),
<<"">> = iolist_to_binary(join(re:split("]","[abc[:x\\]pqr]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("]","[abc[:x\\]pqr]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("]","[abc[:x\\]pqr]",[]))),
<<"">> = iolist_to_binary(join(re:split("p","[abc[:x\\]pqr]",[trim]))),
<<":">> = iolist_to_binary(join(re:split("p","[abc[:x\\]pqr]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("p","[abc[:x\\]pqr]",[]))),
<<"fooabcfoo">> = iolist_to_binary(join(re:split("fooabcfoo",".*[op][xyz]",[trim]))),
<<"fooabcfoo">> = iolist_to_binary(join(re:split("fooabcfoo",".*[op][xyz]",[{parts,
2}]))),
<<"fooabcfoo">> = iolist_to_binary(join(re:split("fooabcfoo",".*[op][xyz]",[]))),
<<"adc">> = iolist_to_binary(join(re:split("adc","(?(?=.*b)b|^)",[trim]))),
<<"adc">> = iolist_to_binary(join(re:split("adc","(?(?=.*b)b|^)",[{parts,
2}]))),
<<"adc">> = iolist_to_binary(join(re:split("adc","(?(?=.*b)b|^)",[]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b)b|^)",[trim]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b)b|^)",[{parts,
2}]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b)b|^)",[]))),
<<"adc">> = iolist_to_binary(join(re:split("adc","(?(?=^.*b)b|^)",[trim]))),
<<"adc">> = iolist_to_binary(join(re:split("adc","(?(?=^.*b)b|^)",[{parts,
2}]))),
<<"adc">> = iolist_to_binary(join(re:split("adc","(?(?=^.*b)b|^)",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(?(?=^.*b)b|^)",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(?(?=^.*b)b|^)",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(?(?=^.*b)b|^)",[]))),
<<"a:d:c">> = iolist_to_binary(join(re:split("adc","(?(?=.*b)b|^)*",[trim]))),
<<"a:dc">> = iolist_to_binary(join(re:split("adc","(?(?=.*b)b|^)*",[{parts,
2}]))),
<<"a:d:c:">> = iolist_to_binary(join(re:split("adc","(?(?=.*b)b|^)*",[]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b)b|^)*",[trim]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b)b|^)*",[{parts,
2}]))),
<<"a:c:">> = iolist_to_binary(join(re:split("abc","(?(?=.*b)b|^)*",[]))),
ok.
run37() ->
<<"adc">> = iolist_to_binary(join(re:split("adc","(?(?=.*b)b|^)+",[trim]))),
<<"adc">> = iolist_to_binary(join(re:split("adc","(?(?=.*b)b|^)+",[{parts,
2}]))),
<<"adc">> = iolist_to_binary(join(re:split("adc","(?(?=.*b)b|^)+",[]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b)b|^)+",[trim]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b)b|^)+",[{parts,
2}]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b)b|^)+",[]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=b).*b|^d)",[trim]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=b).*b|^d)",[{parts,
2}]))),
<<"a:c">> = iolist_to_binary(join(re:split("abc","(?(?=b).*b|^d)",[]))),
<<":c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b).*b|^d)",[trim]))),
<<":c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b).*b|^d)",[{parts,
2}]))),
<<":c">> = iolist_to_binary(join(re:split("abc","(?(?=.*b).*b|^d)",[]))),
<<"">> = iolist_to_binary(join(re:split("%ab%","^%((?(?=[a])[^%])|b)*%$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("%ab%","^%((?(?=[a])[^%])|b)*%$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("%ab%","^%((?(?=[a])[^%])|b)*%$",[]))),
<<"X:X">> = iolist_to_binary(join(re:split("XabX","(?i)a(?-i)b|c",[trim]))),
<<"X:X">> = iolist_to_binary(join(re:split("XabX","(?i)a(?-i)b|c",[{parts,
2}]))),
<<"X:X">> = iolist_to_binary(join(re:split("XabX","(?i)a(?-i)b|c",[]))),
<<"X:X">> = iolist_to_binary(join(re:split("XAbX","(?i)a(?-i)b|c",[trim]))),
<<"X:X">> = iolist_to_binary(join(re:split("XAbX","(?i)a(?-i)b|c",[{parts,
2}]))),
<<"X:X">> = iolist_to_binary(join(re:split("XAbX","(?i)a(?-i)b|c",[]))),
<<"C:C">> = iolist_to_binary(join(re:split("CcC","(?i)a(?-i)b|c",[trim]))),
<<"C:C">> = iolist_to_binary(join(re:split("CcC","(?i)a(?-i)b|c",[{parts,
2}]))),
<<"C:C">> = iolist_to_binary(join(re:split("CcC","(?i)a(?-i)b|c",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?i)a(?-i)b|c",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?i)a(?-i)b|c",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?i)a(?-i)b|c",[]))),
<<"XABX">> = iolist_to_binary(join(re:split("XABX","(?i)a(?-i)b|c",[trim]))),
<<"XABX">> = iolist_to_binary(join(re:split("XABX","(?i)a(?-i)b|c",[{parts,
2}]))),
<<"XABX">> = iolist_to_binary(join(re:split("XABX","(?i)a(?-i)b|c",[]))),
<<"">> = iolist_to_binary(join(re:split("
","[\\x00-\\xff\\s]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("
","[\\x00-\\xff\\s]+",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("
","[\\x00-\\xff\\s]+",[]))),
<<"">> = iolist_to_binary(join(re:split("?","^\\c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("?","^\\c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("?","^\\c",[]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1",[caseless,
trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1",[caseless,
{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1",[caseless]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1",[trim]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1",[{parts,
2}]))),
<<"abc">> = iolist_to_binary(join(re:split("abc","(abc)\\1",[]))),
<<":a">> = iolist_to_binary(join(re:split("12abc","[^a]*",[caseless,
trim]))),
<<":abc">> = iolist_to_binary(join(re:split("12abc","[^a]*",[caseless,
{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("12abc","[^a]*",[caseless]))),
<<":A">> = iolist_to_binary(join(re:split("12ABC","[^a]*",[caseless,
trim]))),
<<":ABC">> = iolist_to_binary(join(re:split("12ABC","[^a]*",[caseless,
{parts,
2}]))),
<<":A:">> = iolist_to_binary(join(re:split("12ABC","[^a]*",[caseless]))),
<<":a">> = iolist_to_binary(join(re:split("12abc","[^a]*+",[caseless,
trim]))),
<<":abc">> = iolist_to_binary(join(re:split("12abc","[^a]*+",[caseless,
{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("12abc","[^a]*+",[caseless]))),
<<":A">> = iolist_to_binary(join(re:split("12ABC","[^a]*+",[caseless,
trim]))),
<<":ABC">> = iolist_to_binary(join(re:split("12ABC","[^a]*+",[caseless,
{parts,
2}]))),
<<":A:">> = iolist_to_binary(join(re:split("12ABC","[^a]*+",[caseless]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","[^a]*?X",[caseless,
trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","[^a]*?X",[caseless,
{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","[^a]*?X",[caseless]))),
<<"12abc">> = iolist_to_binary(join(re:split("12abc","[^a]*?X",[caseless,
trim]))),
<<"12abc">> = iolist_to_binary(join(re:split("12abc","[^a]*?X",[caseless,
{parts,
2}]))),
<<"12abc">> = iolist_to_binary(join(re:split("12abc","[^a]*?X",[caseless]))),
<<"12ABC">> = iolist_to_binary(join(re:split("12ABC","[^a]*?X",[caseless,
trim]))),
<<"12ABC">> = iolist_to_binary(join(re:split("12ABC","[^a]*?X",[caseless,
{parts,
2}]))),
<<"12ABC">> = iolist_to_binary(join(re:split("12ABC","[^a]*?X",[caseless]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","[^a]+?X",[caseless,
trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","[^a]+?X",[caseless,
{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","[^a]+?X",[caseless]))),
<<"12abc">> = iolist_to_binary(join(re:split("12abc","[^a]+?X",[caseless,
trim]))),
<<"12abc">> = iolist_to_binary(join(re:split("12abc","[^a]+?X",[caseless,
{parts,
2}]))),
<<"12abc">> = iolist_to_binary(join(re:split("12abc","[^a]+?X",[caseless]))),
<<"12ABC">> = iolist_to_binary(join(re:split("12ABC","[^a]+?X",[caseless,
trim]))),
<<"12ABC">> = iolist_to_binary(join(re:split("12ABC","[^a]+?X",[caseless,
{parts,
2}]))),
<<"12ABC">> = iolist_to_binary(join(re:split("12ABC","[^a]+?X",[caseless]))),
<<"12a:b">> = iolist_to_binary(join(re:split("12aXbcX","[^a]?X",[caseless,
trim]))),
<<"12a:bcX">> = iolist_to_binary(join(re:split("12aXbcX","[^a]?X",[caseless,
{parts,
2}]))),
<<"12a:b:">> = iolist_to_binary(join(re:split("12aXbcX","[^a]?X",[caseless]))),
<<"12A:B">> = iolist_to_binary(join(re:split("12AXBCX","[^a]?X",[caseless,
trim]))),
<<"12A:BCX">> = iolist_to_binary(join(re:split("12AXBCX","[^a]?X",[caseless,
{parts,
2}]))),
<<"12A:B:">> = iolist_to_binary(join(re:split("12AXBCX","[^a]?X",[caseless]))),
<<"B">> = iolist_to_binary(join(re:split("BCX","[^a]?X",[caseless,
trim]))),
<<"B:">> = iolist_to_binary(join(re:split("BCX","[^a]?X",[caseless,
{parts,
2}]))),
<<"B:">> = iolist_to_binary(join(re:split("BCX","[^a]?X",[caseless]))),
<<"12a:b">> = iolist_to_binary(join(re:split("12aXbcX","[^a]??X",[caseless,
trim]))),
<<"12a:bcX">> = iolist_to_binary(join(re:split("12aXbcX","[^a]??X",[caseless,
{parts,
2}]))),
<<"12a:b:">> = iolist_to_binary(join(re:split("12aXbcX","[^a]??X",[caseless]))),
<<"12A:B">> = iolist_to_binary(join(re:split("12AXBCX","[^a]??X",[caseless,
trim]))),
<<"12A:BCX">> = iolist_to_binary(join(re:split("12AXBCX","[^a]??X",[caseless,
{parts,
2}]))),
<<"12A:B:">> = iolist_to_binary(join(re:split("12AXBCX","[^a]??X",[caseless]))),
<<"B">> = iolist_to_binary(join(re:split("BCX","[^a]??X",[caseless,
trim]))),
<<"B:">> = iolist_to_binary(join(re:split("BCX","[^a]??X",[caseless,
{parts,
2}]))),
<<"B:">> = iolist_to_binary(join(re:split("BCX","[^a]??X",[caseless]))),
<<"12aXb">> = iolist_to_binary(join(re:split("12aXbcX","[^a]?+X",[caseless,
trim]))),
<<"12aXb:">> = iolist_to_binary(join(re:split("12aXbcX","[^a]?+X",[caseless,
{parts,
2}]))),
<<"12aXb:">> = iolist_to_binary(join(re:split("12aXbcX","[^a]?+X",[caseless]))),
<<"12AXB">> = iolist_to_binary(join(re:split("12AXBCX","[^a]?+X",[caseless,
trim]))),
<<"12AXB:">> = iolist_to_binary(join(re:split("12AXBCX","[^a]?+X",[caseless,
{parts,
2}]))),
<<"12AXB:">> = iolist_to_binary(join(re:split("12AXBCX","[^a]?+X",[caseless]))),
<<"B">> = iolist_to_binary(join(re:split("BCX","[^a]?+X",[caseless,
trim]))),
<<"B:">> = iolist_to_binary(join(re:split("BCX","[^a]?+X",[caseless,
{parts,
2}]))),
<<"B:">> = iolist_to_binary(join(re:split("BCX","[^a]?+X",[caseless]))),
<<"a">> = iolist_to_binary(join(re:split("abcdef","[^a]{2,3}",[caseless,
trim]))),
<<"a:ef">> = iolist_to_binary(join(re:split("abcdef","[^a]{2,3}",[caseless,
{parts,
2}]))),
<<"a::">> = iolist_to_binary(join(re:split("abcdef","[^a]{2,3}",[caseless]))),
<<"A">> = iolist_to_binary(join(re:split("ABCDEF","[^a]{2,3}",[caseless,
trim]))),
<<"A:EF">> = iolist_to_binary(join(re:split("ABCDEF","[^a]{2,3}",[caseless,
{parts,
2}]))),
<<"A::">> = iolist_to_binary(join(re:split("ABCDEF","[^a]{2,3}",[caseless]))),
<<"a::f">> = iolist_to_binary(join(re:split("abcdef","[^a]{2,3}?",[caseless,
trim]))),
<<"a:def">> = iolist_to_binary(join(re:split("abcdef","[^a]{2,3}?",[caseless,
{parts,
2}]))),
<<"a::f">> = iolist_to_binary(join(re:split("abcdef","[^a]{2,3}?",[caseless]))),
<<"A::F">> = iolist_to_binary(join(re:split("ABCDEF","[^a]{2,3}?",[caseless,
trim]))),
<<"A:DEF">> = iolist_to_binary(join(re:split("ABCDEF","[^a]{2,3}?",[caseless,
{parts,
2}]))),
<<"A::F">> = iolist_to_binary(join(re:split("ABCDEF","[^a]{2,3}?",[caseless]))),
<<"a">> = iolist_to_binary(join(re:split("abcdef","[^a]{2,3}+",[caseless,
trim]))),
<<"a:ef">> = iolist_to_binary(join(re:split("abcdef","[^a]{2,3}+",[caseless,
{parts,
2}]))),
<<"a::">> = iolist_to_binary(join(re:split("abcdef","[^a]{2,3}+",[caseless]))),
<<"A">> = iolist_to_binary(join(re:split("ABCDEF","[^a]{2,3}+",[caseless,
trim]))),
<<"A:EF">> = iolist_to_binary(join(re:split("ABCDEF","[^a]{2,3}+",[caseless,
{parts,
2}]))),
<<"A::">> = iolist_to_binary(join(re:split("ABCDEF","[^a]{2,3}+",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("Z","((a|)+)+Z",[trim]))),
<<":::">> = iolist_to_binary(join(re:split("Z","((a|)+)+Z",[{parts,
2}]))),
<<":::">> = iolist_to_binary(join(re:split("Z","((a|)+)+Z",[]))),
ok.
run38() ->
<<"::a">> = iolist_to_binary(join(re:split("ac","(a)b|(a)c",[trim]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(a)b|(a)c",[{parts,
2}]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(a)b|(a)c",[]))),
<<"::a">> = iolist_to_binary(join(re:split("ac","(?>(a))b|(a)c",[trim]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(?>(a))b|(a)c",[{parts,
2}]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(?>(a))b|(a)c",[]))),
<<"::a">> = iolist_to_binary(join(re:split("ac","(?=(a))ab|(a)c",[trim]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(?=(a))ab|(a)c",[{parts,
2}]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(?=(a))ab|(a)c",[]))),
<<":ac::a">> = iolist_to_binary(join(re:split("ac","((?>(a))b|(a)c)",[trim]))),
<<":ac::a:">> = iolist_to_binary(join(re:split("ac","((?>(a))b|(a)c)",[{parts,
2}]))),
<<":ac::a:">> = iolist_to_binary(join(re:split("ac","((?>(a))b|(a)c)",[]))),
<<":ac::a">> = iolist_to_binary(join(re:split("ac","((?>(a))b|(a)c)++",[trim]))),
<<":ac::a:">> = iolist_to_binary(join(re:split("ac","((?>(a))b|(a)c)++",[{parts,
2}]))),
<<":ac::a:">> = iolist_to_binary(join(re:split("ac","((?>(a))b|(a)c)++",[]))),
<<"::a">> = iolist_to_binary(join(re:split("ac","(?:(?>(a))b|(a)c)++",[trim]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(?:(?>(a))b|(a)c)++",[{parts,
2}]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(?:(?>(a))b|(a)c)++",[]))),
<<"::a:ac">> = iolist_to_binary(join(re:split("ac","(?=(?>(a))b|(a)c)(..)",[trim]))),
<<"::a:ac:">> = iolist_to_binary(join(re:split("ac","(?=(?>(a))b|(a)c)(..)",[{parts,
2}]))),
<<"::a:ac:">> = iolist_to_binary(join(re:split("ac","(?=(?>(a))b|(a)c)(..)",[]))),
<<"::a">> = iolist_to_binary(join(re:split("ac","(?>(?>(a))b|(a)c)",[trim]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(?>(?>(a))b|(a)c)",[{parts,
2}]))),
<<"::a:">> = iolist_to_binary(join(re:split("ac","(?>(?>(a))b|(a)c)",[]))),
<<":aaaabaaabaabab:aaa:aabab">> = iolist_to_binary(join(re:split("aaaabaaabaabab","((?>(a+)b)+(aabab))",[trim]))),
<<":aaaabaaabaabab:aaa:aabab:">> = iolist_to_binary(join(re:split("aaaabaaabaabab","((?>(a+)b)+(aabab))",[{parts,
2}]))),
<<":aaaabaaabaabab:aaa:aabab:">> = iolist_to_binary(join(re:split("aaaabaaabaabab","((?>(a+)b)+(aabab))",[]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","(?>a+|ab)+?c",[trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","(?>a+|ab)+?c",[{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","(?>a+|ab)+?c",[]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","(?>a+|ab)+c",[trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","(?>a+|ab)+c",[{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","(?>a+|ab)+c",[]))),
<<"">> = iolist_to_binary(join(re:split("aabc","(?:a+|ab)+c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aabc","(?:a+|ab)+c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aabc","(?:a+|ab)+c",[]))),
<<":a">> = iolist_to_binary(join(re:split("a","(?(?=(a))a)",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("a","(?(?=(a))a)",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("a","(?(?=(a))a)",[]))),
<<":a:b">> = iolist_to_binary(join(re:split("ab","(?(?=(a))a)(b)",[trim]))),
<<":a:b:">> = iolist_to_binary(join(re:split("ab","(?(?=(a))a)(b)",[{parts,
2}]))),
<<":a:b:">> = iolist_to_binary(join(re:split("ab","(?(?=(a))a)(b)",[]))),
<<"aaaabc">> = iolist_to_binary(join(re:split("aaaabc","^(?:a|ab)++c",[trim]))),
<<"aaaabc">> = iolist_to_binary(join(re:split("aaaabc","^(?:a|ab)++c",[{parts,
2}]))),
<<"aaaabc">> = iolist_to_binary(join(re:split("aaaabc","^(?:a|ab)++c",[]))),
<<"aaaabc">> = iolist_to_binary(join(re:split("aaaabc","^(?>a|ab)++c",[trim]))),
<<"aaaabc">> = iolist_to_binary(join(re:split("aaaabc","^(?>a|ab)++c",[{parts,
2}]))),
<<"aaaabc">> = iolist_to_binary(join(re:split("aaaabc","^(?>a|ab)++c",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaabc","^(?:a|ab)+c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaabc","^(?:a|ab)+c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaabc","^(?:a|ab)+c",[]))),
<<"">> = iolist_to_binary(join(re:split("xyz","(?=abc){0}xyz",[trim]))),
<<":">> = iolist_to_binary(join(re:split("xyz","(?=abc){0}xyz",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("xyz","(?=abc){0}xyz",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?=abc){1}xyz",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?=abc){1}xyz",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?=abc){1}xyz",[]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","(?=abc){1}xyz",[trim]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","(?=abc){1}xyz",[{parts,
2}]))),
<<"xyz">> = iolist_to_binary(join(re:split("xyz","(?=abc){1}xyz",[]))),
<<":a">> = iolist_to_binary(join(re:split("ab","(?=(a))?.",[trim]))),
<<":a:b">> = iolist_to_binary(join(re:split("ab","(?=(a))?.",[{parts,
2}]))),
<<":a:::">> = iolist_to_binary(join(re:split("ab","(?=(a))?.",[]))),
<<"">> = iolist_to_binary(join(re:split("bc","(?=(a))?.",[trim]))),
<<"::c">> = iolist_to_binary(join(re:split("bc","(?=(a))?.",[{parts,
2}]))),
<<"::::">> = iolist_to_binary(join(re:split("bc","(?=(a))?.",[]))),
ok.
run39() ->
<<"">> = iolist_to_binary(join(re:split("ab","(?=(a))??.",[trim]))),
<<"::b">> = iolist_to_binary(join(re:split("ab","(?=(a))??.",[{parts,
2}]))),
<<"::::">> = iolist_to_binary(join(re:split("ab","(?=(a))??.",[]))),
<<"">> = iolist_to_binary(join(re:split("bc","(?=(a))??.",[trim]))),
<<"::c">> = iolist_to_binary(join(re:split("bc","(?=(a))??.",[{parts,
2}]))),
<<"::::">> = iolist_to_binary(join(re:split("bc","(?=(a))??.",[]))),
<<"::ckgammon">> = iolist_to_binary(join(re:split("backgammon","^(?=(a)){0}b(?1)",[trim]))),
<<"::ckgammon">> = iolist_to_binary(join(re:split("backgammon","^(?=(a)){0}b(?1)",[{parts,
2}]))),
<<"::ckgammon">> = iolist_to_binary(join(re:split("backgammon","^(?=(a)){0}b(?1)",[]))),
<<":b">> = iolist_to_binary(join(re:split("abd","^(?=(?1))?[az]([abc])d",[trim]))),
<<":b:">> = iolist_to_binary(join(re:split("abd","^(?=(?1))?[az]([abc])d",[{parts,
2}]))),
<<":b:">> = iolist_to_binary(join(re:split("abd","^(?=(?1))?[az]([abc])d",[]))),
<<":c:xx">> = iolist_to_binary(join(re:split("zcdxx","^(?=(?1))?[az]([abc])d",[trim]))),
<<":c:xx">> = iolist_to_binary(join(re:split("zcdxx","^(?=(?1))?[az]([abc])d",[{parts,
2}]))),
<<":c:xx">> = iolist_to_binary(join(re:split("zcdxx","^(?=(?1))?[az]([abc])d",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaa","^(?!a){0}\\w+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaaa","^(?!a){0}\\w+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaaa","^(?!a){0}\\w+",[]))),
<<"abc:abc">> = iolist_to_binary(join(re:split("abcxyz","(?<=(abc))?xyz",[trim]))),
<<"abc:abc:">> = iolist_to_binary(join(re:split("abcxyz","(?<=(abc))?xyz",[{parts,
2}]))),
<<"abc:abc:">> = iolist_to_binary(join(re:split("abcxyz","(?<=(abc))?xyz",[]))),
<<"pqr">> = iolist_to_binary(join(re:split("pqrxyz","(?<=(abc))?xyz",[trim]))),
<<"pqr::">> = iolist_to_binary(join(re:split("pqrxyz","(?<=(abc))?xyz",[{parts,
2}]))),
<<"pqr::">> = iolist_to_binary(join(re:split("pqrxyz","(?<=(abc))?xyz",[]))),
<<"">> = iolist_to_binary(join(re:split("ggg<<<aaa>>>","^[\\g<a>]+",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ggg<<<aaa>>>","^[\\g<a>]+",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ggg<<<aaa>>>","^[\\g<a>]+",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\g<a>]+",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\g<a>]+",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^[\\g<a>]+",[]))),
<<"\\ga">> = iolist_to_binary(join(re:split("\\ga","^[\\g<a>]+",[trim]))),
<<"\\ga">> = iolist_to_binary(join(re:split("\\ga","^[\\g<a>]+",[{parts,
2}]))),
<<"\\ga">> = iolist_to_binary(join(re:split("\\ga","^[\\g<a>]+",[]))),
<<":xyz">> = iolist_to_binary(join(re:split("gggagagaxyz","^[\\ga]+",[trim]))),
<<":xyz">> = iolist_to_binary(join(re:split("gggagagaxyz","^[\\ga]+",[{parts,
2}]))),
<<":xyz">> = iolist_to_binary(join(re:split("gggagagaxyz","^[\\ga]+",[]))),
<<":Z">> = iolist_to_binary(join(re:split("aaaa444:::Z","^[:a[:digit:]]+",[trim]))),
<<":Z">> = iolist_to_binary(join(re:split("aaaa444:::Z","^[:a[:digit:]]+",[{parts,
2}]))),
<<":Z">> = iolist_to_binary(join(re:split("aaaa444:::Z","^[:a[:digit:]]+",[]))),
<<":Z">> = iolist_to_binary(join(re:split("aaaa444:::bbbZ","^[:a[:digit:]:b]+",[trim]))),
<<":Z">> = iolist_to_binary(join(re:split("aaaa444:::bbbZ","^[:a[:digit:]:b]+",[{parts,
2}]))),
<<":Z">> = iolist_to_binary(join(re:split("aaaa444:::bbbZ","^[:a[:digit:]:b]+",[]))),
<<"">> = iolist_to_binary(join(re:split(":xxx:","[:a]xxx[b:]",[trim]))),
<<":">> = iolist_to_binary(join(re:split(":xxx:","[:a]xxx[b:]",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split(":xxx:","[:a]xxx[b:]",[]))),
<<"xaa:c">> = iolist_to_binary(join(re:split("xaabc","(?<=a{2})b",[caseless,
trim]))),
<<"xaa:c">> = iolist_to_binary(join(re:split("xaabc","(?<=a{2})b",[caseless,
{parts,
2}]))),
<<"xaa:c">> = iolist_to_binary(join(re:split("xaabc","(?<=a{2})b",[caseless]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=a{2})b",[caseless,
trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=a{2})b",[caseless,
{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=a{2})b",[caseless]))),
<<"xabc">> = iolist_to_binary(join(re:split("xabc","(?<=a{2})b",[caseless,
trim]))),
<<"xabc">> = iolist_to_binary(join(re:split("xabc","(?<=a{2})b",[caseless,
{parts,
2}]))),
<<"xabc">> = iolist_to_binary(join(re:split("xabc","(?<=a{2})b",[caseless]))),
<<"xa:c">> = iolist_to_binary(join(re:split("xabc","(?<!a{2})b",[caseless,
trim]))),
<<"xa:c">> = iolist_to_binary(join(re:split("xabc","(?<!a{2})b",[caseless,
{parts,
2}]))),
<<"xa:c">> = iolist_to_binary(join(re:split("xabc","(?<!a{2})b",[caseless]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<!a{2})b",[caseless,
trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<!a{2})b",[caseless,
{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<!a{2})b",[caseless]))),
<<"xaabc">> = iolist_to_binary(join(re:split("xaabc","(?<!a{2})b",[caseless,
trim]))),
<<"xaabc">> = iolist_to_binary(join(re:split("xaabc","(?<!a{2})b",[caseless,
{parts,
2}]))),
<<"xaabc">> = iolist_to_binary(join(re:split("xaabc","(?<!a{2})b",[caseless]))),
<<"xa ">> = iolist_to_binary(join(re:split("xa c","(?<=a\\h)c",[trim]))),
<<"xa :">> = iolist_to_binary(join(re:split("xa c","(?<=a\\h)c",[{parts,
2}]))),
<<"xa :">> = iolist_to_binary(join(re:split("xa c","(?<=a\\h)c",[]))),
<<"axx:c">> = iolist_to_binary(join(re:split("axxbc","(?<=[^a]{2})b",[trim]))),
<<"axx:c">> = iolist_to_binary(join(re:split("axxbc","(?<=[^a]{2})b",[{parts,
2}]))),
<<"axx:c">> = iolist_to_binary(join(re:split("axxbc","(?<=[^a]{2})b",[]))),
<<"aAA:c">> = iolist_to_binary(join(re:split("aAAbc","(?<=[^a]{2})b",[trim]))),
<<"aAA:c">> = iolist_to_binary(join(re:split("aAAbc","(?<=[^a]{2})b",[{parts,
2}]))),
<<"aAA:c">> = iolist_to_binary(join(re:split("aAAbc","(?<=[^a]{2})b",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^a]{2})b",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^a]{2})b",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^a]{2})b",[]))),
<<"xaabc">> = iolist_to_binary(join(re:split("xaabc","(?<=[^a]{2})b",[trim]))),
<<"xaabc">> = iolist_to_binary(join(re:split("xaabc","(?<=[^a]{2})b",[{parts,
2}]))),
<<"xaabc">> = iolist_to_binary(join(re:split("xaabc","(?<=[^a]{2})b",[]))),
<<"axx:c">> = iolist_to_binary(join(re:split("axxbc","(?<=[^a]{2})b",[caseless,
trim]))),
<<"axx:c">> = iolist_to_binary(join(re:split("axxbc","(?<=[^a]{2})b",[caseless,
{parts,
2}]))),
<<"axx:c">> = iolist_to_binary(join(re:split("axxbc","(?<=[^a]{2})b",[caseless]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^a]{2})b",[caseless,
trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^a]{2})b",[caseless,
{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=[^a]{2})b",[caseless]))),
<<"aAAbc">> = iolist_to_binary(join(re:split("aAAbc","(?<=[^a]{2})b",[caseless,
trim]))),
<<"aAAbc">> = iolist_to_binary(join(re:split("aAAbc","(?<=[^a]{2})b",[caseless,
{parts,
2}]))),
<<"aAAbc">> = iolist_to_binary(join(re:split("aAAbc","(?<=[^a]{2})b",[caseless]))),
<<"xaabc">> = iolist_to_binary(join(re:split("xaabc","(?<=[^a]{2})b",[caseless,
trim]))),
<<"xaabc">> = iolist_to_binary(join(re:split("xaabc","(?<=[^a]{2})b",[caseless,
{parts,
2}]))),
<<"xaabc">> = iolist_to_binary(join(re:split("xaabc","(?<=[^a]{2})b",[caseless]))),
<<"ab">> = iolist_to_binary(join(re:split("abc","(?<=a\\H)c",[trim]))),
<<"ab:">> = iolist_to_binary(join(re:split("abc","(?<=a\\H)c",[{parts,
2}]))),
<<"ab:">> = iolist_to_binary(join(re:split("abc","(?<=a\\H)c",[]))),
<<"ab">> = iolist_to_binary(join(re:split("abc","(?<=a\\V)c",[trim]))),
<<"ab:">> = iolist_to_binary(join(re:split("abc","(?<=a\\V)c",[{parts,
2}]))),
<<"ab:">> = iolist_to_binary(join(re:split("abc","(?<=a\\V)c",[]))),
<<"a
">> = iolist_to_binary(join(re:split("a
c","(?<=a\\v)c",[trim]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
c","(?<=a\\v)c",[{parts,2}]))),
<<"a
:">> = iolist_to_binary(join(re:split("a
c","(?<=a\\v)c",[]))),
<<"X:X">> = iolist_to_binary(join(re:split("XcccddYX","(?(?=c)c|d)++Y",[trim]))),
<<"X:X">> = iolist_to_binary(join(re:split("XcccddYX","(?(?=c)c|d)++Y",[{parts,
2}]))),
<<"X:X">> = iolist_to_binary(join(re:split("XcccddYX","(?(?=c)c|d)++Y",[]))),
<<"X:X">> = iolist_to_binary(join(re:split("XcccddYX","(?(?=c)c|d)*+Y",[trim]))),
<<"X:X">> = iolist_to_binary(join(re:split("XcccddYX","(?(?=c)c|d)*+Y",[{parts,
2}]))),
<<"X:X">> = iolist_to_binary(join(re:split("XcccddYX","(?(?=c)c|d)*+Y",[]))),
ok.
run40() ->
<<":aaa">> = iolist_to_binary(join(re:split("aaaaaaa","^(a{2,3}){2,}+a",[trim]))),
<<":aaa:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a{2,3}){2,}+a",[{parts,
2}]))),
<<":aaa:">> = iolist_to_binary(join(re:split("aaaaaaa","^(a{2,3}){2,}+a",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a{2,3}){2,}+a",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a{2,3}){2,}+a",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a{2,3}){2,}+a",[]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(a{2,3}){2,}+a",[trim]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(a{2,3}){2,}+a",[{parts,
2}]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(a{2,3}){2,}+a",[]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a{2,3}){2,}+a",[trim]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a{2,3}){2,}+a",[{parts,
2}]))),
<<"aaaaaaaaa">> = iolist_to_binary(join(re:split("aaaaaaaaa","^(a{2,3}){2,}+a",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a{2,3})++a",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a{2,3})++a",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a{2,3})++a",[]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(a{2,3})++a",[trim]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(a{2,3})++a",[{parts,
2}]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(a{2,3})++a",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a{2,3})*+a",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a{2,3})*+a",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a{2,3})*+a",[]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(a{2,3})*+a",[trim]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(a{2,3})*+a",[{parts,
2}]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(a{2,3})*+a",[]))),
<<"">> = iolist_to_binary(join(re:split("abXde","ab\\Cde",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abXde","ab\\Cde",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abXde","ab\\Cde",[]))),
<<"abZde">> = iolist_to_binary(join(re:split("abZdeX","(?<=ab\\Cde)X",[trim]))),
<<"abZde:">> = iolist_to_binary(join(re:split("abZdeX","(?<=ab\\Cde)X",[{parts,
2}]))),
<<"abZde:">> = iolist_to_binary(join(re:split("abZdeX","(?<=ab\\Cde)X",[]))),
<<"">> = iolist_to_binary(join(re:split("aCb","a[\\CD]b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aCb","a[\\CD]b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aCb","a[\\CD]b",[]))),
<<"">> = iolist_to_binary(join(re:split("aDb","a[\\CD]b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aDb","a[\\CD]b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aDb","a[\\CD]b",[]))),
<<"">> = iolist_to_binary(join(re:split("aJb","a[\\C-X]b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aJb","a[\\C-X]b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aJb","a[\\C-X]b",[]))),
<<"X X">> = iolist_to_binary(join(re:split("X X","\\H\\h\\V\\v",[trim]))),
<<"X X">> = iolist_to_binary(join(re:split("X X","\\H\\h\\V\\v",[{parts,
2}]))),
<<"X X">> = iolist_to_binary(join(re:split("X X","\\H\\h\\V\\v",[]))),
<<"">> = iolist_to_binary(join(re:split("X X","\\H\\h\\V\\v",[trim]))),
<<":">> = iolist_to_binary(join(re:split("X X","\\H\\h\\V\\v",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("X X","\\H\\h\\V\\v",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\H\\h\\V\\v",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\H\\h\\V\\v",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\H\\h\\V\\v",[]))),
<<" X">> = iolist_to_binary(join(re:split(" X","\\H\\h\\V\\v",[trim]))),
<<" X">> = iolist_to_binary(join(re:split(" X","\\H\\h\\V\\v",[{parts,
2}]))),
<<" X">> = iolist_to_binary(join(re:split(" X","\\H\\h\\V\\v",[]))),
<<"">> = iolist_to_binary(join(re:split(" X
","\\H*\\h+\\V?\\v{3,4}",[trim]))),
<<":">> = iolist_to_binary(join(re:split(" X
","\\H*\\h+\\V?\\v{3,4}",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split(" X
","\\H*\\h+\\V?\\v{3,4}",[]))),
<<"">> = iolist_to_binary(join(re:split("
","\\H*\\h+\\V?\\v{3,4}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("
","\\H*\\h+\\V?\\v{3,4}",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("
","\\H*\\h+\\V?\\v{3,4}",[]))),
<<"">> = iolist_to_binary(join(re:split("
","\\H*\\h+\\V?\\v{3,4}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("
","\\H*\\h+\\V?\\v{3,4}",[{parts,2}]))),
<<":">> = iolist_to_binary(join(re:split("
","\\H*\\h+\\V?\\v{3,4}",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\H*\\h+\\V?\\v{3,4}",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\H*\\h+\\V?\\v{3,4}",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\H*\\h+\\V?\\v{3,4}",[]))),
<<"
">> = iolist_to_binary(join(re:split("
","\\H*\\h+\\V?\\v{3,4}",[trim]))),
<<"
">> = iolist_to_binary(join(re:split("
","\\H*\\h+\\V?\\v{3,4}",[{parts,2}]))),
<<"
">> = iolist_to_binary(join(re:split("
","\\H*\\h+\\V?\\v{3,4}",[]))),
<<"XY :E">> = iolist_to_binary(join(re:split("XY ABCDE","\\H{3,4}",[trim]))),
<<"XY :E">> = iolist_to_binary(join(re:split("XY ABCDE","\\H{3,4}",[{parts,
2}]))),
<<"XY :E">> = iolist_to_binary(join(re:split("XY ABCDE","\\H{3,4}",[]))),
<<"XY : ST">> = iolist_to_binary(join(re:split("XY PQR ST","\\H{3,4}",[trim]))),
<<"XY : ST">> = iolist_to_binary(join(re:split("XY PQR ST","\\H{3,4}",[{parts,
2}]))),
<<"XY : ST">> = iolist_to_binary(join(re:split("XY PQR ST","\\H{3,4}",[]))),
<<"XY A:QRS">> = iolist_to_binary(join(re:split("XY AB PQRS",".\\h{3,4}.",[trim]))),
<<"XY A:QRS">> = iolist_to_binary(join(re:split("XY AB PQRS",".\\h{3,4}.",[{parts,
2}]))),
<<"XY A:QRS">> = iolist_to_binary(join(re:split("XY AB PQRS",".\\h{3,4}.",[]))),
<<">">> = iolist_to_binary(join(re:split(">XNNNYZ","\\h*X\\h?\\H+Y\\H?Z",[trim]))),
<<">:">> = iolist_to_binary(join(re:split(">XNNNYZ","\\h*X\\h?\\H+Y\\H?Z",[{parts,
2}]))),
<<">:">> = iolist_to_binary(join(re:split(">XNNNYZ","\\h*X\\h?\\H+Y\\H?Z",[]))),
<<">">> = iolist_to_binary(join(re:split("> X NYQZ","\\h*X\\h?\\H+Y\\H?Z",[trim]))),
<<">:">> = iolist_to_binary(join(re:split("> X NYQZ","\\h*X\\h?\\H+Y\\H?Z",[{parts,
2}]))),
<<">:">> = iolist_to_binary(join(re:split("> X NYQZ","\\h*X\\h?\\H+Y\\H?Z",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\h*X\\h?\\H+Y\\H?Z",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\h*X\\h?\\H+Y\\H?Z",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\h*X\\h?\\H+Y\\H?Z",[]))),
<<">XYZ">> = iolist_to_binary(join(re:split(">XYZ","\\h*X\\h?\\H+Y\\H?Z",[trim]))),
<<">XYZ">> = iolist_to_binary(join(re:split(">XYZ","\\h*X\\h?\\H+Y\\H?Z",[{parts,
2}]))),
<<">XYZ">> = iolist_to_binary(join(re:split(">XYZ","\\h*X\\h?\\H+Y\\H?Z",[]))),
<<"> X NY Z">> = iolist_to_binary(join(re:split("> X NY Z","\\h*X\\h?\\H+Y\\H?Z",[trim]))),
<<"> X NY Z">> = iolist_to_binary(join(re:split("> X NY Z","\\h*X\\h?\\H+Y\\H?Z",[{parts,
2}]))),
<<"> X NY Z">> = iolist_to_binary(join(re:split("> X NY Z","\\h*X\\h?\\H+Y\\H?Z",[]))),
<<">">> = iolist_to_binary(join(re:split(">XY
Z
ANN","\\v*X\\v?Y\\v+Z\\V*\\x0a\\V+\\x0b\\V{2,3}\\x0c",[trim]))),
<<">:">> = iolist_to_binary(join(re:split(">XY
Z
ANN","\\v*X\\v?Y\\v+Z\\V*\\x0a\\V+\\x0b\\V{2,3}\\x0c",[{parts,
2}]))),
<<">:">> = iolist_to_binary(join(re:split(">XY
Z
ANN","\\v*X\\v?Y\\v+Z\\V*\\x0a\\V+\\x0b\\V{2,3}\\x0c",[]))),
<<">">> = iolist_to_binary(join(re:split(">
X
Y
ZZZ
AAANNN","\\v*X\\v?Y\\v+Z\\V*\\x0a\\V+\\x0b\\V{2,3}\\x0c",[trim]))),
<<">:">> = iolist_to_binary(join(re:split(">
X
Y
ZZZ
AAANNN","\\v*X\\v?Y\\v+Z\\V*\\x0a\\V+\\x0b\\V{2,3}\\x0c",[{parts,
2}]))),
<<">:">> = iolist_to_binary(join(re:split(">
X
Y
ZZZ
AAANNN","\\v*X\\v?Y\\v+Z\\V*\\x0a\\V+\\x0b\\V{2,3}\\x0c",[]))),
<<"foo:foo">> = iolist_to_binary(join(re:split("foobar","(foo)\\Kbar",[trim]))),
<<"foo:foo:">> = iolist_to_binary(join(re:split("foobar","(foo)\\Kbar",[{parts,
2}]))),
<<"foo:foo:">> = iolist_to_binary(join(re:split("foobar","(foo)\\Kbar",[]))),
<<"foo:foo:bar">> = iolist_to_binary(join(re:split("foobar","(foo)(\\Kbar|baz)",[trim]))),
<<"foo:foo:bar:">> = iolist_to_binary(join(re:split("foobar","(foo)(\\Kbar|baz)",[{parts,
2}]))),
<<"foo:foo:bar:">> = iolist_to_binary(join(re:split("foobar","(foo)(\\Kbar|baz)",[]))),
<<":foo:baz">> = iolist_to_binary(join(re:split("foobaz","(foo)(\\Kbar|baz)",[trim]))),
<<":foo:baz:">> = iolist_to_binary(join(re:split("foobaz","(foo)(\\Kbar|baz)",[{parts,
2}]))),
<<":foo:baz:">> = iolist_to_binary(join(re:split("foobaz","(foo)(\\Kbar|baz)",[]))),
<<"foo:foobar">> = iolist_to_binary(join(re:split("foobarbaz","(foo\\Kbar)baz",[trim]))),
<<"foo:foobar:">> = iolist_to_binary(join(re:split("foobarbaz","(foo\\Kbar)baz",[{parts,
2}]))),
<<"foo:foobar:">> = iolist_to_binary(join(re:split("foobarbaz","(foo\\Kbar)baz",[]))),
<<":ab:b:XXXX">> = iolist_to_binary(join(re:split("ababababbbabZXXXX","^(a(b))\\1\\g1\\g{1}\\g-1\\g{-1}\\g{-02}Z",[trim]))),
<<":ab:b:XXXX">> = iolist_to_binary(join(re:split("ababababbbabZXXXX","^(a(b))\\1\\g1\\g{1}\\g-1\\g{-1}\\g{-02}Z",[{parts,
2}]))),
<<":ab:b:XXXX">> = iolist_to_binary(join(re:split("ababababbbabZXXXX","^(a(b))\\1\\g1\\g{1}\\g-1\\g{-1}\\g{-02}Z",[]))),
<<":tom">> = iolist_to_binary(join(re:split("tom-tom","(?<A>tom|bon)-\\g{A}",[trim]))),
<<":tom:">> = iolist_to_binary(join(re:split("tom-tom","(?<A>tom|bon)-\\g{A}",[{parts,
2}]))),
<<":tom:">> = iolist_to_binary(join(re:split("tom-tom","(?<A>tom|bon)-\\g{A}",[]))),
<<":bon">> = iolist_to_binary(join(re:split("bon-bon","(?<A>tom|bon)-\\g{A}",[trim]))),
<<":bon:">> = iolist_to_binary(join(re:split("bon-bon","(?<A>tom|bon)-\\g{A}",[{parts,
2}]))),
<<":bon:">> = iolist_to_binary(join(re:split("bon-bon","(?<A>tom|bon)-\\g{A}",[]))),
<<"bacxxx">> = iolist_to_binary(join(re:split("bacxxx","(^(a|b\\g{-1}))",[trim]))),
<<"bacxxx">> = iolist_to_binary(join(re:split("bacxxx","(^(a|b\\g{-1}))",[{parts,
2}]))),
<<"bacxxx">> = iolist_to_binary(join(re:split("bacxxx","(^(a|b\\g{-1}))",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abcabc","(?|(abc)|(xyz))\\1",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","(?|(abc)|(xyz))\\1",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","(?|(abc)|(xyz))\\1",[]))),
<<":xyz">> = iolist_to_binary(join(re:split("xyzxyz","(?|(abc)|(xyz))\\1",[trim]))),
<<":xyz:">> = iolist_to_binary(join(re:split("xyzxyz","(?|(abc)|(xyz))\\1",[{parts,
2}]))),
<<":xyz:">> = iolist_to_binary(join(re:split("xyzxyz","(?|(abc)|(xyz))\\1",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?|(abc)|(xyz))\\1",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?|(abc)|(xyz))\\1",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?|(abc)|(xyz))\\1",[]))),
<<"abcxyz">> = iolist_to_binary(join(re:split("abcxyz","(?|(abc)|(xyz))\\1",[trim]))),
<<"abcxyz">> = iolist_to_binary(join(re:split("abcxyz","(?|(abc)|(xyz))\\1",[{parts,
2}]))),
<<"abcxyz">> = iolist_to_binary(join(re:split("abcxyz","(?|(abc)|(xyz))\\1",[]))),
<<"xyzabc">> = iolist_to_binary(join(re:split("xyzabc","(?|(abc)|(xyz))\\1",[trim]))),
<<"xyzabc">> = iolist_to_binary(join(re:split("xyzabc","(?|(abc)|(xyz))\\1",[{parts,
2}]))),
<<"xyzabc">> = iolist_to_binary(join(re:split("xyzabc","(?|(abc)|(xyz))\\1",[]))),
ok.
run41() ->
<<":abc">> = iolist_to_binary(join(re:split("abcabc","(?|(abc)|(xyz))(?1)",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","(?|(abc)|(xyz))(?1)",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","(?|(abc)|(xyz))(?1)",[]))),
<<":xyz">> = iolist_to_binary(join(re:split("xyzabc","(?|(abc)|(xyz))(?1)",[trim]))),
<<":xyz:">> = iolist_to_binary(join(re:split("xyzabc","(?|(abc)|(xyz))(?1)",[{parts,
2}]))),
<<":xyz:">> = iolist_to_binary(join(re:split("xyzabc","(?|(abc)|(xyz))(?1)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?|(abc)|(xyz))(?1)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?|(abc)|(xyz))(?1)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?|(abc)|(xyz))(?1)",[]))),
<<"xyzxyz">> = iolist_to_binary(join(re:split("xyzxyz","(?|(abc)|(xyz))(?1)",[trim]))),
<<"xyzxyz">> = iolist_to_binary(join(re:split("xyzxyz","(?|(abc)|(xyz))(?1)",[{parts,
2}]))),
<<"xyzxyz">> = iolist_to_binary(join(re:split("xyzxyz","(?|(abc)|(xyz))(?1)",[]))),
<<":a:b:c:d:Y">> = iolist_to_binary(join(re:split("XYabcdY","^X(?5)(a)(?|(b)|(q))(c)(d)(Y)",[trim]))),
<<":a:b:c:d:Y:">> = iolist_to_binary(join(re:split("XYabcdY","^X(?5)(a)(?|(b)|(q))(c)(d)(Y)",[{parts,
2}]))),
<<":a:b:c:d:Y:">> = iolist_to_binary(join(re:split("XYabcdY","^X(?5)(a)(?|(b)|(q))(c)(d)(Y)",[]))),
<<":a:b:::c:d:Y">> = iolist_to_binary(join(re:split("XYabcdY","^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)",[trim]))),
<<":a:b:::c:d:Y:">> = iolist_to_binary(join(re:split("XYabcdY","^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)",[{parts,
2}]))),
<<":a:b:::c:d:Y:">> = iolist_to_binary(join(re:split("XYabcdY","^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)",[]))),
<<":a:b:::c:d:Y">> = iolist_to_binary(join(re:split("XYabcdY","^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)",[trim]))),
<<":a:b:::c:d:Y:">> = iolist_to_binary(join(re:split("XYabcdY","^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)",[{parts,
2}]))),
<<":a:b:::c:d:Y:">> = iolist_to_binary(join(re:split("XYabcdY","^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)",[]))),
<<":a:xyz">> = iolist_to_binary(join(re:split("a:aaxyz","(?'abc'\\w+):\\k<abc>{2}",[trim]))),
<<":a:xyz">> = iolist_to_binary(join(re:split("a:aaxyz","(?'abc'\\w+):\\k<abc>{2}",[{parts,
2}]))),
<<":a:xyz">> = iolist_to_binary(join(re:split("a:aaxyz","(?'abc'\\w+):\\k<abc>{2}",[]))),
<<":ab:xyz">> = iolist_to_binary(join(re:split("ab:ababxyz","(?'abc'\\w+):\\k<abc>{2}",[trim]))),
<<":ab:xyz">> = iolist_to_binary(join(re:split("ab:ababxyz","(?'abc'\\w+):\\k<abc>{2}",[{parts,
2}]))),
<<":ab:xyz">> = iolist_to_binary(join(re:split("ab:ababxyz","(?'abc'\\w+):\\k<abc>{2}",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?'abc'\\w+):\\k<abc>{2}",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?'abc'\\w+):\\k<abc>{2}",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?'abc'\\w+):\\k<abc>{2}",[]))),
<<"a:axyz">> = iolist_to_binary(join(re:split("a:axyz","(?'abc'\\w+):\\k<abc>{2}",[trim]))),
<<"a:axyz">> = iolist_to_binary(join(re:split("a:axyz","(?'abc'\\w+):\\k<abc>{2}",[{parts,
2}]))),
<<"a:axyz">> = iolist_to_binary(join(re:split("a:axyz","(?'abc'\\w+):\\k<abc>{2}",[]))),
<<"ab:abxyz">> = iolist_to_binary(join(re:split("ab:abxyz","(?'abc'\\w+):\\k<abc>{2}",[trim]))),
<<"ab:abxyz">> = iolist_to_binary(join(re:split("ab:abxyz","(?'abc'\\w+):\\k<abc>{2}",[{parts,
2}]))),
<<"ab:abxyz">> = iolist_to_binary(join(re:split("ab:abxyz","(?'abc'\\w+):\\k<abc>{2}",[]))),
<<":a:xyz">> = iolist_to_binary(join(re:split("a:aaxyz","(?'abc'\\w+):\\g{abc}{2}",[trim]))),
<<":a:xyz">> = iolist_to_binary(join(re:split("a:aaxyz","(?'abc'\\w+):\\g{abc}{2}",[{parts,
2}]))),
<<":a:xyz">> = iolist_to_binary(join(re:split("a:aaxyz","(?'abc'\\w+):\\g{abc}{2}",[]))),
<<":ab:xyz">> = iolist_to_binary(join(re:split("ab:ababxyz","(?'abc'\\w+):\\g{abc}{2}",[trim]))),
<<":ab:xyz">> = iolist_to_binary(join(re:split("ab:ababxyz","(?'abc'\\w+):\\g{abc}{2}",[{parts,
2}]))),
<<":ab:xyz">> = iolist_to_binary(join(re:split("ab:ababxyz","(?'abc'\\w+):\\g{abc}{2}",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?'abc'\\w+):\\g{abc}{2}",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?'abc'\\w+):\\g{abc}{2}",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?'abc'\\w+):\\g{abc}{2}",[]))),
<<"a:axyz">> = iolist_to_binary(join(re:split("a:axyz","(?'abc'\\w+):\\g{abc}{2}",[trim]))),
<<"a:axyz">> = iolist_to_binary(join(re:split("a:axyz","(?'abc'\\w+):\\g{abc}{2}",[{parts,
2}]))),
<<"a:axyz">> = iolist_to_binary(join(re:split("a:axyz","(?'abc'\\w+):\\g{abc}{2}",[]))),
<<"ab:abxyz">> = iolist_to_binary(join(re:split("ab:abxyz","(?'abc'\\w+):\\g{abc}{2}",[trim]))),
<<"ab:abxyz">> = iolist_to_binary(join(re:split("ab:abxyz","(?'abc'\\w+):\\g{abc}{2}",[{parts,
2}]))),
<<"ab:abxyz">> = iolist_to_binary(join(re:split("ab:abxyz","(?'abc'\\w+):\\g{abc}{2}",[]))),
<<":a">> = iolist_to_binary(join(re:split("abd","^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)",[extended,
trim]))),
<<":a:">> = iolist_to_binary(join(re:split("abd","^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)",[extended,
{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("abd","^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)",[extended]))),
<<"">> = iolist_to_binary(join(re:split("ce","^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)",[extended,
trim]))),
<<"::">> = iolist_to_binary(join(re:split("ce","^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)",[extended,
{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("ce","^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)",[extended]))),
<<":aX">> = iolist_to_binary(join(re:split("aXaXZ","^(a.)\\g-1Z",[trim]))),
<<":aX:">> = iolist_to_binary(join(re:split("aXaXZ","^(a.)\\g-1Z",[{parts,
2}]))),
<<":aX:">> = iolist_to_binary(join(re:split("aXaXZ","^(a.)\\g-1Z",[]))),
<<":aX">> = iolist_to_binary(join(re:split("aXaXZ","^(a.)\\g{-1}Z",[trim]))),
<<":aX:">> = iolist_to_binary(join(re:split("aXaXZ","^(a.)\\g{-1}Z",[{parts,
2}]))),
<<":aX:">> = iolist_to_binary(join(re:split("aXaXZ","^(a.)\\g{-1}Z",[]))),
<<":::cd">> = iolist_to_binary(join(re:split("abcd","^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) ",[extended,
trim]))),
<<":::cd">> = iolist_to_binary(join(re:split("abcd","^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) ",[extended,
{parts,
2}]))),
<<":::cd">> = iolist_to_binary(join(re:split("abcd","^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) ",[extended]))),
<<":metcalfe:33">> = iolist_to_binary(join(re:split("metcalfe 33","(?<NAME>(?&NAME_PAT))\\s+(?<ADDR>(?&ADDRESS_PAT))
(?(DEFINE)
(?<NAME_PAT>[a-z]+)
(?<ADDRESS_PAT>\\d+)
)",[extended,trim]))),
<<":metcalfe:33:::">> = iolist_to_binary(join(re:split("metcalfe 33","(?<NAME>(?&NAME_PAT))\\s+(?<ADDR>(?&ADDRESS_PAT))
(?(DEFINE)
(?<NAME_PAT>[a-z]+)
(?<ADDRESS_PAT>\\d+)
)",[extended,{parts,2}]))),
<<":metcalfe:33:::">> = iolist_to_binary(join(re:split("metcalfe 33","(?<NAME>(?&NAME_PAT))\\s+(?<ADDR>(?&ADDRESS_PAT))
(?(DEFINE)
(?<NAME_PAT>[a-z]+)
(?<ADDRESS_PAT>\\d+)
)",[extended]))),
<<"::.4">> = iolist_to_binary(join(re:split("1.2.3.4","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[trim]))),
<<"::.4:">> = iolist_to_binary(join(re:split("1.2.3.4","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[{parts,
2}]))),
<<"::.4:">> = iolist_to_binary(join(re:split("1.2.3.4","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[]))),
<<"::.206">> = iolist_to_binary(join(re:split("131.111.10.206","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[trim]))),
<<"::.206:">> = iolist_to_binary(join(re:split("131.111.10.206","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[{parts,
2}]))),
<<"::.206:">> = iolist_to_binary(join(re:split("131.111.10.206","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[]))),
<<"::.0">> = iolist_to_binary(join(re:split("10.0.0.0","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[trim]))),
<<"::.0:">> = iolist_to_binary(join(re:split("10.0.0.0","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[{parts,
2}]))),
<<"::.0:">> = iolist_to_binary(join(re:split("10.0.0.0","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[]))),
<<"10.6">> = iolist_to_binary(join(re:split("10.6","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[trim]))),
<<"10.6">> = iolist_to_binary(join(re:split("10.6","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[{parts,
2}]))),
<<"10.6">> = iolist_to_binary(join(re:split("10.6","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[]))),
<<"455.3.4.5">> = iolist_to_binary(join(re:split("455.3.4.5","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[trim]))),
<<"455.3.4.5">> = iolist_to_binary(join(re:split("455.3.4.5","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[{parts,
2}]))),
<<"455.3.4.5">> = iolist_to_binary(join(re:split("455.3.4.5","(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))\\b(?&byte)(\\.(?&byte)){3}",[]))),
<<":.4">> = iolist_to_binary(join(re:split("1.2.3.4","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[trim]))),
<<":.4::">> = iolist_to_binary(join(re:split("1.2.3.4","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[{parts,
2}]))),
<<":.4::">> = iolist_to_binary(join(re:split("1.2.3.4","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[]))),
<<":.206">> = iolist_to_binary(join(re:split("131.111.10.206","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[trim]))),
<<":.206::">> = iolist_to_binary(join(re:split("131.111.10.206","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[{parts,
2}]))),
<<":.206::">> = iolist_to_binary(join(re:split("131.111.10.206","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[]))),
<<":.0">> = iolist_to_binary(join(re:split("10.0.0.0","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[trim]))),
<<":.0::">> = iolist_to_binary(join(re:split("10.0.0.0","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[{parts,
2}]))),
<<":.0::">> = iolist_to_binary(join(re:split("10.0.0.0","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[]))),
<<"10.6">> = iolist_to_binary(join(re:split("10.6","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[trim]))),
<<"10.6">> = iolist_to_binary(join(re:split("10.6","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[{parts,
2}]))),
<<"10.6">> = iolist_to_binary(join(re:split("10.6","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[]))),
<<"455.3.4.5">> = iolist_to_binary(join(re:split("455.3.4.5","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[trim]))),
<<"455.3.4.5">> = iolist_to_binary(join(re:split("455.3.4.5","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[{parts,
2}]))),
<<"455.3.4.5">> = iolist_to_binary(join(re:split("455.3.4.5","\\b(?&byte)(\\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\\d|25[0-5]|1\\d\\d|[1-9]?\\d))",[]))),
<<":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]))),
<<":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}]))),
<<":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++)*$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\w++|\\s++)*$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\w++|\\s++)*$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\w++|\\s++)*$",[]))),
<<"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]))),
<<"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}]))),
<<"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++)*$",[]))),
<<":12345:a">> = iolist_to_binary(join(re:split("12345a","(\\d++)(\\w)",[trim]))),
<<":12345:a:">> = iolist_to_binary(join(re:split("12345a","(\\d++)(\\w)",[{parts,
2}]))),
<<":12345:a:">> = iolist_to_binary(join(re:split("12345a","(\\d++)(\\w)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(\\d++)(\\w)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(\\d++)(\\w)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","(\\d++)(\\w)",[]))),
<<"12345+">> = iolist_to_binary(join(re:split("12345+","(\\d++)(\\w)",[trim]))),
<<"12345+">> = iolist_to_binary(join(re:split("12345+","(\\d++)(\\w)",[{parts,
2}]))),
<<"12345+">> = iolist_to_binary(join(re:split("12345+","(\\d++)(\\w)",[]))),
<<"">> = iolist_to_binary(join(re:split("aaab","a++b",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaab","a++b",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaab","a++b",[]))),
<<":aaab">> = iolist_to_binary(join(re:split("aaab","(a++b)",[trim]))),
<<":aaab:">> = iolist_to_binary(join(re:split("aaab","(a++b)",[{parts,
2}]))),
<<":aaab:">> = iolist_to_binary(join(re:split("aaab","(a++b)",[]))),
<<":aaa">> = iolist_to_binary(join(re:split("aaab","(a++)b",[trim]))),
<<":aaa:">> = iolist_to_binary(join(re:split("aaab","(a++)b",[{parts,
2}]))),
<<":aaa:">> = iolist_to_binary(join(re:split("aaab","(a++)b",[]))),
<<"((:x">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","([^()]++|\\([^()]*\\))+",[trim]))),
<<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","([^()]++|\\([^()]*\\))+",[{parts,
2}]))),
<<"((:x:">> = iolist_to_binary(join(re:split("((abc(ade)ufh()()x","([^()]++|\\([^()]*\\))+",[]))),
<<":abc">> = iolist_to_binary(join(re:split("(abc)","\\(([^()]++|\\([^()]+\\))+\\)",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("(abc)","\\(([^()]++|\\([^()]+\\))+\\)",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("(abc)","\\(([^()]++|\\([^()]+\\))+\\)",[]))),
<<":xyz">> = iolist_to_binary(join(re:split("(abc(def)xyz)","\\(([^()]++|\\([^()]+\\))+\\)",[trim]))),
<<":xyz:">> = iolist_to_binary(join(re:split("(abc(def)xyz)","\\(([^()]++|\\([^()]+\\))+\\)",[{parts,
2}]))),
<<":xyz:">> = iolist_to_binary(join(re:split("(abc(def)xyz)","\\(([^()]++|\\([^()]+\\))+\\)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\(([^()]++|\\([^()]+\\))+\\)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\(([^()]++|\\([^()]+\\))+\\)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","\\(([^()]++|\\([^()]+\\))+\\)",[]))),
<<"((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","\\(([^()]++|\\([^()]+\\))+\\)",[trim]))),
<<"((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","\\(([^()]++|\\([^()]+\\))+\\)",[{parts,
2}]))),
<<"((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">> = iolist_to_binary(join(re:split("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","\\(([^()]++|\\([^()]+\\))+\\)",[]))),
ok.
run42() ->
<<":c">> = iolist_to_binary(join(re:split("abc","^([^()]|\\((?1)*\\))*$",[trim]))),
<<":c:">> = iolist_to_binary(join(re:split("abc","^([^()]|\\((?1)*\\))*$",[{parts,
2}]))),
<<":c:">> = iolist_to_binary(join(re:split("abc","^([^()]|\\((?1)*\\))*$",[]))),
<<":c">> = iolist_to_binary(join(re:split("a(b)c","^([^()]|\\((?1)*\\))*$",[trim]))),
<<":c:">> = iolist_to_binary(join(re:split("a(b)c","^([^()]|\\((?1)*\\))*$",[{parts,
2}]))),
<<":c:">> = iolist_to_binary(join(re:split("a(b)c","^([^()]|\\((?1)*\\))*$",[]))),
<<":d">> = iolist_to_binary(join(re:split("a(b(c))d","^([^()]|\\((?1)*\\))*$",[trim]))),
<<":d:">> = iolist_to_binary(join(re:split("a(b(c))d","^([^()]|\\((?1)*\\))*$",[{parts,
2}]))),
<<":d:">> = iolist_to_binary(join(re:split("a(b(c))d","^([^()]|\\((?1)*\\))*$",[]))),
<<"*** Failers)">> = iolist_to_binary(join(re:split("*** Failers)","^([^()]|\\((?1)*\\))*$",[trim]))),
<<"*** Failers)">> = iolist_to_binary(join(re:split("*** Failers)","^([^()]|\\((?1)*\\))*$",[{parts,
2}]))),
<<"*** Failers)">> = iolist_to_binary(join(re:split("*** Failers)","^([^()]|\\((?1)*\\))*$",[]))),
<<"a(b(c)d">> = iolist_to_binary(join(re:split("a(b(c)d","^([^()]|\\((?1)*\\))*$",[trim]))),
<<"a(b(c)d">> = iolist_to_binary(join(re:split("a(b(c)d","^([^()]|\\((?1)*\\))*$",[{parts,
2}]))),
<<"a(b(c)d">> = iolist_to_binary(join(re:split("a(b(c)d","^([^()]|\\((?1)*\\))*$",[]))),
<<":3">> = iolist_to_binary(join(re:split(">abc>123<xyz<","^>abc>([^()]|\\((?1)*\\))*<xyz<$",[trim]))),
<<":3:">> = iolist_to_binary(join(re:split(">abc>123<xyz<","^>abc>([^()]|\\((?1)*\\))*<xyz<$",[{parts,
2}]))),
<<":3:">> = iolist_to_binary(join(re:split(">abc>123<xyz<","^>abc>([^()]|\\((?1)*\\))*<xyz<$",[]))),
<<":3">> = iolist_to_binary(join(re:split(">abc>1(2)3<xyz<","^>abc>([^()]|\\((?1)*\\))*<xyz<$",[trim]))),
<<":3:">> = iolist_to_binary(join(re:split(">abc>1(2)3<xyz<","^>abc>([^()]|\\((?1)*\\))*<xyz<$",[{parts,
2}]))),
<<":3:">> = iolist_to_binary(join(re:split(">abc>1(2)3<xyz<","^>abc>([^()]|\\((?1)*\\))*<xyz<$",[]))),
<<":(1(2)3)">> = iolist_to_binary(join(re:split(">abc>(1(2)3)<xyz<","^>abc>([^()]|\\((?1)*\\))*<xyz<$",[trim]))),
<<":(1(2)3):">> = iolist_to_binary(join(re:split(">abc>(1(2)3)<xyz<","^>abc>([^()]|\\((?1)*\\))*<xyz<$",[{parts,
2}]))),
<<":(1(2)3):">> = iolist_to_binary(join(re:split(">abc>(1(2)3)<xyz<","^>abc>([^()]|\\((?1)*\\))*<xyz<$",[]))),
<<":1221:1">> = iolist_to_binary(join(re:split("1221","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
trim]))),
<<":1221:1:::">> = iolist_to_binary(join(re:split("1221","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
{parts,
2}]))),
<<":1221:1:::">> = iolist_to_binary(join(re:split("1221","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless]))),
<<":::Satanoscillatemymetallicsonatas:S">> = iolist_to_binary(join(re:split("Satanoscillatemymetallicsonatas","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
trim]))),
<<":::Satanoscillatemymetallicsonatas:S:">> = iolist_to_binary(join(re:split("Satanoscillatemymetallicsonatas","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
{parts,
2}]))),
<<":::Satanoscillatemymetallicsonatas:S:">> = iolist_to_binary(join(re:split("Satanoscillatemymetallicsonatas","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless]))),
<<":::AmanaplanacanalPanama:A">> = iolist_to_binary(join(re:split("AmanaplanacanalPanama","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
trim]))),
<<":::AmanaplanacanalPanama:A:">> = iolist_to_binary(join(re:split("AmanaplanacanalPanama","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
{parts,
2}]))),
<<":::AmanaplanacanalPanama:A:">> = iolist_to_binary(join(re:split("AmanaplanacanalPanama","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless]))),
<<":::AblewasIereIsawElba:A">> = iolist_to_binary(join(re:split("AblewasIereIsawElba","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
trim]))),
<<":::AblewasIereIsawElba:A:">> = iolist_to_binary(join(re:split("AblewasIereIsawElba","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
{parts,
2}]))),
<<":::AblewasIereIsawElba:A:">> = iolist_to_binary(join(re:split("AblewasIereIsawElba","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless]))),
<<"Thequickbrownfox">> = iolist_to_binary(join(re:split("Thequickbrownfox","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
trim]))),
<<"Thequickbrownfox">> = iolist_to_binary(join(re:split("Thequickbrownfox","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless,
{parts,
2}]))),
<<"Thequickbrownfox">> = iolist_to_binary(join(re:split("Thequickbrownfox","^(?:((.)(?1)\\2|)|((.)(?3)\\4|.))$",[caseless]))),
<<":12">> = iolist_to_binary(join(re:split("12","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[trim]))),
<<":12::">> = iolist_to_binary(join(re:split("12","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[{parts,
2}]))),
<<":12::">> = iolist_to_binary(join(re:split("12","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[]))),
<<":(((2+2)*-3)-7):-">> = iolist_to_binary(join(re:split("(((2+2)*-3)-7)","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[trim]))),
<<":(((2+2)*-3)-7):-:">> = iolist_to_binary(join(re:split("(((2+2)*-3)-7)","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[{parts,
2}]))),
<<":(((2+2)*-3)-7):-:">> = iolist_to_binary(join(re:split("(((2+2)*-3)-7)","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[]))),
<<":-12">> = iolist_to_binary(join(re:split("-12","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[trim]))),
<<":-12::">> = iolist_to_binary(join(re:split("-12","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[{parts,
2}]))),
<<":-12::">> = iolist_to_binary(join(re:split("-12","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[]))),
<<"((2+2)*-3)-7)">> = iolist_to_binary(join(re:split("((2+2)*-3)-7)","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[trim]))),
<<"((2+2)*-3)-7)">> = iolist_to_binary(join(re:split("((2+2)*-3)-7)","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[{parts,
2}]))),
<<"((2+2)*-3)-7)">> = iolist_to_binary(join(re:split("((2+2)*-3)-7)","^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$",[]))),
<<":xyz:y">> = iolist_to_binary(join(re:split("xyz","^(x(y|(?1){2})z)",[trim]))),
<<":xyz:y:">> = iolist_to_binary(join(re:split("xyz","^(x(y|(?1){2})z)",[{parts,
2}]))),
<<":xyz:y:">> = iolist_to_binary(join(re:split("xyz","^(x(y|(?1){2})z)",[]))),
<<":xxyzxyzz:xyzxyz">> = iolist_to_binary(join(re:split("xxyzxyzz","^(x(y|(?1){2})z)",[trim]))),
<<":xxyzxyzz:xyzxyz:">> = iolist_to_binary(join(re:split("xxyzxyzz","^(x(y|(?1){2})z)",[{parts,
2}]))),
<<":xxyzxyzz:xyzxyz:">> = iolist_to_binary(join(re:split("xxyzxyzz","^(x(y|(?1){2})z)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(x(y|(?1){2})z)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(x(y|(?1){2})z)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(x(y|(?1){2})z)",[]))),
<<"xxyzz">> = iolist_to_binary(join(re:split("xxyzz","^(x(y|(?1){2})z)",[trim]))),
<<"xxyzz">> = iolist_to_binary(join(re:split("xxyzz","^(x(y|(?1){2})z)",[{parts,
2}]))),
<<"xxyzz">> = iolist_to_binary(join(re:split("xxyzz","^(x(y|(?1){2})z)",[]))),
<<"xxyzxyzxyzz">> = iolist_to_binary(join(re:split("xxyzxyzxyzz","^(x(y|(?1){2})z)",[trim]))),
<<"xxyzxyzxyzz">> = iolist_to_binary(join(re:split("xxyzxyzxyzz","^(x(y|(?1){2})z)",[{parts,
2}]))),
<<"xxyzxyzxyzz">> = iolist_to_binary(join(re:split("xxyzxyzxyzz","^(x(y|(?1){2})z)",[]))),
<<":<>:<>">> = iolist_to_binary(join(re:split("<>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
trim]))),
<<":<>:<>:">> = iolist_to_binary(join(re:split("<>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
{parts,
2}]))),
<<":<>:<>:">> = iolist_to_binary(join(re:split("<>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended]))),
<<":<abcd>:<abcd>">> = iolist_to_binary(join(re:split("<abcd>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
trim]))),
<<":<abcd>:<abcd>:">> = iolist_to_binary(join(re:split("<abcd>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
{parts,
2}]))),
<<":<abcd>:<abcd>:">> = iolist_to_binary(join(re:split("<abcd>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended]))),
<<":<abc <123> hij>:<abc <123> hij>">> = iolist_to_binary(join(re:split("<abc <123> hij>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
trim]))),
<<":<abc <123> hij>:<abc <123> hij>:">> = iolist_to_binary(join(re:split("<abc <123> hij>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
{parts,
2}]))),
<<":<abc <123> hij>:<abc <123> hij>:">> = iolist_to_binary(join(re:split("<abc <123> hij>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended]))),
<<"<abc :<def>:<def>: hij>">> = iolist_to_binary(join(re:split("<abc <def> hij>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
trim]))),
<<"<abc :<def>:<def>: hij>">> = iolist_to_binary(join(re:split("<abc <def> hij>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
{parts,
2}]))),
<<"<abc :<def>:<def>: hij>">> = iolist_to_binary(join(re:split("<abc <def> hij>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended]))),
<<":<abc<>def>:<abc<>def>">> = iolist_to_binary(join(re:split("<abc<>def>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
trim]))),
<<":<abc<>def>:<abc<>def>:">> = iolist_to_binary(join(re:split("<abc<>def>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
{parts,
2}]))),
<<":<abc<>def>:<abc<>def>:">> = iolist_to_binary(join(re:split("<abc<>def>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended]))),
<<"<abc:<>:<>">> = iolist_to_binary(join(re:split("<abc<>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
trim]))),
<<"<abc:<>:<>:">> = iolist_to_binary(join(re:split("<abc<>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
{parts,
2}]))),
<<"<abc:<>:<>:">> = iolist_to_binary(join(re:split("<abc<>","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended]))),
<<"<abc">> = iolist_to_binary(join(re:split("<abc","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
trim]))),
<<"<abc">> = iolist_to_binary(join(re:split("<abc","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended,
{parts,
2}]))),
<<"<abc">> = iolist_to_binary(join(re:split("<abc","((< (?: (?(R) \\d++ | [^<>]*+) | (?2)) * >))",[extended]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^a+(*FAIL)",[trim]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^a+(*FAIL)",[{parts,
2}]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^a+(*FAIL)",[]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?c+(*FAIL)",[trim]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?c+(*FAIL)",[{parts,
2}]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?c+(*FAIL)",[]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?(*PRUNE)c+(*FAIL)",[trim]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?(*PRUNE)c+(*FAIL)",[{parts,
2}]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?(*PRUNE)c+(*FAIL)",[]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?(*COMMIT)c+(*FAIL)",[trim]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?(*COMMIT)c+(*FAIL)",[{parts,
2}]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?(*COMMIT)c+(*FAIL)",[]))),
<<"aaabcccaaabccc">> = iolist_to_binary(join(re:split("aaabcccaaabccc","a+b?(*SKIP)c+(*FAIL)",[trim]))),
<<"aaabcccaaabccc">> = iolist_to_binary(join(re:split("aaabcccaaabccc","a+b?(*SKIP)c+(*FAIL)",[{parts,
2}]))),
<<"aaabcccaaabccc">> = iolist_to_binary(join(re:split("aaabcccaaabccc","a+b?(*SKIP)c+(*FAIL)",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaxxxxxx","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaxxxxxx","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaxxxxxx","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":++++++">> = iolist_to_binary(join(re:split("aaa++++++","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":++++++">> = iolist_to_binary(join(re:split("aaa++++++","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":++++++">> = iolist_to_binary(join(re:split("aaa++++++","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<"">> = iolist_to_binary(join(re:split("bbbxxxxx","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":">> = iolist_to_binary(join(re:split("bbbxxxxx","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("bbbxxxxx","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":+++++">> = iolist_to_binary(join(re:split("bbb+++++","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":+++++">> = iolist_to_binary(join(re:split("bbb+++++","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":+++++">> = iolist_to_binary(join(re:split("bbb+++++","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<"">> = iolist_to_binary(join(re:split("cccxxxx","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":">> = iolist_to_binary(join(re:split("cccxxxx","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("cccxxxx","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":++++">> = iolist_to_binary(join(re:split("ccc++++","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":++++">> = iolist_to_binary(join(re:split("ccc++++","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":++++">> = iolist_to_binary(join(re:split("ccc++++","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":ddddd">> = iolist_to_binary(join(re:split("dddddddd","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":ddddd">> = iolist_to_binary(join(re:split("dddddddd","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":ddddd">> = iolist_to_binary(join(re:split("dddddddd","^(?:aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":aaaxxxxxx">> = iolist_to_binary(join(re:split("aaaxxxxxx","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":aaaxxxxxx:">> = iolist_to_binary(join(re:split("aaaxxxxxx","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":aaaxxxxxx:">> = iolist_to_binary(join(re:split("aaaxxxxxx","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":aaa:++++++">> = iolist_to_binary(join(re:split("aaa++++++","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":aaa:++++++">> = iolist_to_binary(join(re:split("aaa++++++","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":aaa:++++++">> = iolist_to_binary(join(re:split("aaa++++++","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":bbbxxxxx">> = iolist_to_binary(join(re:split("bbbxxxxx","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":bbbxxxxx:">> = iolist_to_binary(join(re:split("bbbxxxxx","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":bbbxxxxx:">> = iolist_to_binary(join(re:split("bbbxxxxx","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":bbb:+++++">> = iolist_to_binary(join(re:split("bbb+++++","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":bbb:+++++">> = iolist_to_binary(join(re:split("bbb+++++","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":bbb:+++++">> = iolist_to_binary(join(re:split("bbb+++++","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":cccxxxx">> = iolist_to_binary(join(re:split("cccxxxx","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":cccxxxx:">> = iolist_to_binary(join(re:split("cccxxxx","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":cccxxxx:">> = iolist_to_binary(join(re:split("cccxxxx","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":ccc:++++">> = iolist_to_binary(join(re:split("ccc++++","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":ccc:++++">> = iolist_to_binary(join(re:split("ccc++++","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":ccc:++++">> = iolist_to_binary(join(re:split("ccc++++","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<":ddd:ddddd">> = iolist_to_binary(join(re:split("dddddddd","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[trim]))),
<<":ddd:ddddd">> = iolist_to_binary(join(re:split("dddddddd","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[{parts,
2}]))),
<<":ddd:ddddd">> = iolist_to_binary(join(re:split("dddddddd","^(aaa(*THEN)\\w{6}|bbb(*THEN)\\w{5}|ccc(*THEN)\\w{4}|\\w{3})",[]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?(*THEN)c+(*FAIL)",[trim]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?(*THEN)c+(*FAIL)",[{parts,
2}]))),
<<"aaabccc">> = iolist_to_binary(join(re:split("aaabccc","a+b?(*THEN)c+(*FAIL)",[]))),
<<":AB:B">> = iolist_to_binary(join(re:split("AB","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
trim]))),
<<":AB:B::">> = iolist_to_binary(join(re:split("AB","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
{parts,
2}]))),
<<":AB:B::">> = iolist_to_binary(join(re:split("AB","(A (A|B(*ACCEPT)|C) D)(E)",[extended]))),
<<":AB:B::X">> = iolist_to_binary(join(re:split("ABX","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
trim]))),
<<":AB:B::X">> = iolist_to_binary(join(re:split("ABX","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
{parts,
2}]))),
<<":AB:B::X">> = iolist_to_binary(join(re:split("ABX","(A (A|B(*ACCEPT)|C) D)(E)",[extended]))),
<<":AAD:A:E">> = iolist_to_binary(join(re:split("AADE","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
trim]))),
<<":AAD:A:E:">> = iolist_to_binary(join(re:split("AADE","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
{parts,
2}]))),
<<":AAD:A:E:">> = iolist_to_binary(join(re:split("AADE","(A (A|B(*ACCEPT)|C) D)(E)",[extended]))),
<<":ACD:C:E">> = iolist_to_binary(join(re:split("ACDE","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
trim]))),
<<":ACD:C:E:">> = iolist_to_binary(join(re:split("ACDE","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
{parts,
2}]))),
<<":ACD:C:E:">> = iolist_to_binary(join(re:split("ACDE","(A (A|B(*ACCEPT)|C) D)(E)",[extended]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(A (A|B(*ACCEPT)|C) D)(E)",[extended]))),
<<"AD">> = iolist_to_binary(join(re:split("AD","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
trim]))),
<<"AD">> = iolist_to_binary(join(re:split("AD","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
{parts,
2}]))),
<<"AD">> = iolist_to_binary(join(re:split("AD","(A (A|B(*ACCEPT)|C) D)(E)",[extended]))),
<<":1221:1">> = iolist_to_binary(join(re:split("1221","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
trim]))),
<<":1221:1:::">> = iolist_to_binary(join(re:split("1221","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
{parts,
2}]))),
<<":1221:1:::">> = iolist_to_binary(join(re:split("1221","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless]))),
<<":::Satan, oscillate my metallic sonatas:S">> = iolist_to_binary(join(re:split("Satan, oscillate my metallic sonatas!","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
trim]))),
<<":::Satan, oscillate my metallic sonatas:S:">> = iolist_to_binary(join(re:split("Satan, oscillate my metallic sonatas!","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
{parts,
2}]))),
<<":::Satan, oscillate my metallic sonatas:S:">> = iolist_to_binary(join(re:split("Satan, oscillate my metallic sonatas!","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless]))),
<<":::A man, a plan, a canal: Panama:A">> = iolist_to_binary(join(re:split("A man, a plan, a canal: Panama!","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
trim]))),
<<":::A man, a plan, a canal: Panama:A:">> = iolist_to_binary(join(re:split("A man, a plan, a canal: Panama!","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
{parts,
2}]))),
<<":::A man, a plan, a canal: Panama:A:">> = iolist_to_binary(join(re:split("A man, a plan, a canal: Panama!","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless]))),
<<":::Able was I ere I saw Elba:A">> = iolist_to_binary(join(re:split("Able was I ere I saw Elba.","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
trim]))),
<<":::Able was I ere I saw Elba:A:">> = iolist_to_binary(join(re:split("Able was I ere I saw Elba.","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
{parts,
2}]))),
<<":::Able was I ere I saw Elba:A:">> = iolist_to_binary(join(re:split("Able was I ere I saw Elba.","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless]))),
<<"The quick brown fox">> = iolist_to_binary(join(re:split("The quick brown fox","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
trim]))),
<<"The quick brown fox">> = iolist_to_binary(join(re:split("The quick brown fox","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless,
{parts,
2}]))),
<<"The quick brown fox">> = iolist_to_binary(join(re:split("The quick brown fox","^\\W*+(?:((.)\\W*+(?1)\\W*+\\2|)|((.)\\W*+(?3)\\W*+\\4|\\W*+.\\W*+))\\W*+$",[caseless]))),
<<":a">> = iolist_to_binary(join(re:split("a","^((.)(?1)\\2|.)$",[trim]))),
<<":a::">> = iolist_to_binary(join(re:split("a","^((.)(?1)\\2|.)$",[{parts,
2}]))),
<<":a::">> = iolist_to_binary(join(re:split("a","^((.)(?1)\\2|.)$",[]))),
<<":aba:a">> = iolist_to_binary(join(re:split("aba","^((.)(?1)\\2|.)$",[trim]))),
<<":aba:a:">> = iolist_to_binary(join(re:split("aba","^((.)(?1)\\2|.)$",[{parts,
2}]))),
<<":aba:a:">> = iolist_to_binary(join(re:split("aba","^((.)(?1)\\2|.)$",[]))),
<<":aabaa:a">> = iolist_to_binary(join(re:split("aabaa","^((.)(?1)\\2|.)$",[trim]))),
<<":aabaa:a:">> = iolist_to_binary(join(re:split("aabaa","^((.)(?1)\\2|.)$",[{parts,
2}]))),
<<":aabaa:a:">> = iolist_to_binary(join(re:split("aabaa","^((.)(?1)\\2|.)$",[]))),
<<":abcdcba:a">> = iolist_to_binary(join(re:split("abcdcba","^((.)(?1)\\2|.)$",[trim]))),
<<":abcdcba:a:">> = iolist_to_binary(join(re:split("abcdcba","^((.)(?1)\\2|.)$",[{parts,
2}]))),
<<":abcdcba:a:">> = iolist_to_binary(join(re:split("abcdcba","^((.)(?1)\\2|.)$",[]))),
<<":pqaabaaqp:p">> = iolist_to_binary(join(re:split("pqaabaaqp","^((.)(?1)\\2|.)$",[trim]))),
<<":pqaabaaqp:p:">> = iolist_to_binary(join(re:split("pqaabaaqp","^((.)(?1)\\2|.)$",[{parts,
2}]))),
<<":pqaabaaqp:p:">> = iolist_to_binary(join(re:split("pqaabaaqp","^((.)(?1)\\2|.)$",[]))),
<<":ablewasiereisawelba:a">> = iolist_to_binary(join(re:split("ablewasiereisawelba","^((.)(?1)\\2|.)$",[trim]))),
<<":ablewasiereisawelba:a:">> = iolist_to_binary(join(re:split("ablewasiereisawelba","^((.)(?1)\\2|.)$",[{parts,
2}]))),
<<":ablewasiereisawelba:a:">> = iolist_to_binary(join(re:split("ablewasiereisawelba","^((.)(?1)\\2|.)$",[]))),
<<"rhubarb">> = iolist_to_binary(join(re:split("rhubarb","^((.)(?1)\\2|.)$",[trim]))),
<<"rhubarb">> = iolist_to_binary(join(re:split("rhubarb","^((.)(?1)\\2|.)$",[{parts,
2}]))),
<<"rhubarb">> = iolist_to_binary(join(re:split("rhubarb","^((.)(?1)\\2|.)$",[]))),
<<"the quick brown fox">> = iolist_to_binary(join(re:split("the quick brown fox","^((.)(?1)\\2|.)$",[trim]))),
<<"the quick brown fox">> = iolist_to_binary(join(re:split("the quick brown fox","^((.)(?1)\\2|.)$",[{parts,
2}]))),
<<"the quick brown fox">> = iolist_to_binary(join(re:split("the quick brown fox","^((.)(?1)\\2|.)$",[]))),
<<"b:a:z">> = iolist_to_binary(join(re:split("baz","(a)(?<=b(?1))",[trim]))),
<<"b:a:z">> = iolist_to_binary(join(re:split("baz","(a)(?<=b(?1))",[{parts,
2}]))),
<<"b:a:z">> = iolist_to_binary(join(re:split("baz","(a)(?<=b(?1))",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(a)(?<=b(?1))",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(a)(?<=b(?1))",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(a)(?<=b(?1))",[]))),
<<"caz">> = iolist_to_binary(join(re:split("caz","(a)(?<=b(?1))",[trim]))),
<<"caz">> = iolist_to_binary(join(re:split("caz","(a)(?<=b(?1))",[{parts,
2}]))),
<<"caz">> = iolist_to_binary(join(re:split("caz","(a)(?<=b(?1))",[]))),
<<"zba:a:z">> = iolist_to_binary(join(re:split("zbaaz","(?<=b(?1))(a)",[trim]))),
<<"zba:a:z">> = iolist_to_binary(join(re:split("zbaaz","(?<=b(?1))(a)",[{parts,
2}]))),
<<"zba:a:z">> = iolist_to_binary(join(re:split("zbaaz","(?<=b(?1))(a)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=b(?1))(a)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=b(?1))(a)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=b(?1))(a)",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","(?<=b(?1))(a)",[trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","(?<=b(?1))(a)",[{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","(?<=b(?1))(a)",[]))),
<<"b:a:z">> = iolist_to_binary(join(re:split("baz","(?<X>a)(?<=b(?&X))",[trim]))),
<<"b:a:z">> = iolist_to_binary(join(re:split("baz","(?<X>a)(?<=b(?&X))",[{parts,
2}]))),
<<"b:a:z">> = iolist_to_binary(join(re:split("baz","(?<X>a)(?<=b(?&X))",[]))),
ok.
run43() ->
<<":abc">> = iolist_to_binary(join(re:split("abcabc","^(?|(abc)|(def))\\1",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","^(?|(abc)|(def))\\1",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","^(?|(abc)|(def))\\1",[]))),
<<":def">> = iolist_to_binary(join(re:split("defdef","^(?|(abc)|(def))\\1",[trim]))),
<<":def:">> = iolist_to_binary(join(re:split("defdef","^(?|(abc)|(def))\\1",[{parts,
2}]))),
<<":def:">> = iolist_to_binary(join(re:split("defdef","^(?|(abc)|(def))\\1",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?|(abc)|(def))\\1",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?|(abc)|(def))\\1",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?|(abc)|(def))\\1",[]))),
<<"abcdef">> = iolist_to_binary(join(re:split("abcdef","^(?|(abc)|(def))\\1",[trim]))),
<<"abcdef">> = iolist_to_binary(join(re:split("abcdef","^(?|(abc)|(def))\\1",[{parts,
2}]))),
<<"abcdef">> = iolist_to_binary(join(re:split("abcdef","^(?|(abc)|(def))\\1",[]))),
<<"defabc">> = iolist_to_binary(join(re:split("defabc","^(?|(abc)|(def))\\1",[trim]))),
<<"defabc">> = iolist_to_binary(join(re:split("defabc","^(?|(abc)|(def))\\1",[{parts,
2}]))),
<<"defabc">> = iolist_to_binary(join(re:split("defabc","^(?|(abc)|(def))\\1",[]))),
<<":abc">> = iolist_to_binary(join(re:split("abcabc","^(?|(abc)|(def))(?1)",[trim]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","^(?|(abc)|(def))(?1)",[{parts,
2}]))),
<<":abc:">> = iolist_to_binary(join(re:split("abcabc","^(?|(abc)|(def))(?1)",[]))),
<<":def">> = iolist_to_binary(join(re:split("defabc","^(?|(abc)|(def))(?1)",[trim]))),
<<":def:">> = iolist_to_binary(join(re:split("defabc","^(?|(abc)|(def))(?1)",[{parts,
2}]))),
<<":def:">> = iolist_to_binary(join(re:split("defabc","^(?|(abc)|(def))(?1)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?|(abc)|(def))(?1)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?|(abc)|(def))(?1)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?|(abc)|(def))(?1)",[]))),
<<"defdef">> = iolist_to_binary(join(re:split("defdef","^(?|(abc)|(def))(?1)",[trim]))),
<<"defdef">> = iolist_to_binary(join(re:split("defdef","^(?|(abc)|(def))(?1)",[{parts,
2}]))),
<<"defdef">> = iolist_to_binary(join(re:split("defdef","^(?|(abc)|(def))(?1)",[]))),
<<"abcdef">> = iolist_to_binary(join(re:split("abcdef","^(?|(abc)|(def))(?1)",[trim]))),
<<"abcdef">> = iolist_to_binary(join(re:split("abcdef","^(?|(abc)|(def))(?1)",[{parts,
2}]))),
<<"abcdef">> = iolist_to_binary(join(re:split("abcdef","^(?|(abc)|(def))(?1)",[]))),
<<"A:C:D">> = iolist_to_binary(join(re:split("ABCD","(?:(?1)|B)(A(*F)|C)",[trim]))),
<<"A:C:D">> = iolist_to_binary(join(re:split("ABCD","(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<"A:C:D">> = iolist_to_binary(join(re:split("ABCD","(?:(?1)|B)(A(*F)|C)",[]))),
<<":C:D">> = iolist_to_binary(join(re:split("CCD","(?:(?1)|B)(A(*F)|C)",[trim]))),
<<":C:D">> = iolist_to_binary(join(re:split("CCD","(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<":C:D">> = iolist_to_binary(join(re:split("CCD","(?:(?1)|B)(A(*F)|C)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?:(?1)|B)(A(*F)|C)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?:(?1)|B)(A(*F)|C)",[]))),
<<"CAD">> = iolist_to_binary(join(re:split("CAD","(?:(?1)|B)(A(*F)|C)",[trim]))),
<<"CAD">> = iolist_to_binary(join(re:split("CAD","(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<"CAD">> = iolist_to_binary(join(re:split("CAD","(?:(?1)|B)(A(*F)|C)",[]))),
<<":C:D">> = iolist_to_binary(join(re:split("CCD","^(?:(?1)|B)(A(*F)|C)",[trim]))),
<<":C:D">> = iolist_to_binary(join(re:split("CCD","^(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<":C:D">> = iolist_to_binary(join(re:split("CCD","^(?:(?1)|B)(A(*F)|C)",[]))),
<<":C:D">> = iolist_to_binary(join(re:split("BCD","^(?:(?1)|B)(A(*F)|C)",[trim]))),
<<":C:D">> = iolist_to_binary(join(re:split("BCD","^(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<":C:D">> = iolist_to_binary(join(re:split("BCD","^(?:(?1)|B)(A(*F)|C)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:(?1)|B)(A(*F)|C)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:(?1)|B)(A(*F)|C)",[]))),
<<"ABCD">> = iolist_to_binary(join(re:split("ABCD","^(?:(?1)|B)(A(*F)|C)",[trim]))),
<<"ABCD">> = iolist_to_binary(join(re:split("ABCD","^(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<"ABCD">> = iolist_to_binary(join(re:split("ABCD","^(?:(?1)|B)(A(*F)|C)",[]))),
<<"CAD">> = iolist_to_binary(join(re:split("CAD","^(?:(?1)|B)(A(*F)|C)",[trim]))),
<<"CAD">> = iolist_to_binary(join(re:split("CAD","^(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<"CAD">> = iolist_to_binary(join(re:split("CAD","^(?:(?1)|B)(A(*F)|C)",[]))),
<<"BAD">> = iolist_to_binary(join(re:split("BAD","^(?:(?1)|B)(A(*F)|C)",[trim]))),
<<"BAD">> = iolist_to_binary(join(re:split("BAD","^(?:(?1)|B)(A(*F)|C)",[{parts,
2}]))),
<<"BAD">> = iolist_to_binary(join(re:split("BAD","^(?:(?1)|B)(A(*F)|C)",[]))),
<<":A:D">> = iolist_to_binary(join(re:split("AAD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[trim]))),
<<":A:D">> = iolist_to_binary(join(re:split("AAD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[{parts,
2}]))),
<<":A:D">> = iolist_to_binary(join(re:split("AAD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[]))),
<<":C">> = iolist_to_binary(join(re:split("ACD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[trim]))),
<<":C:">> = iolist_to_binary(join(re:split("ACD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[{parts,
2}]))),
<<":C:">> = iolist_to_binary(join(re:split("ACD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[]))),
<<":A:D">> = iolist_to_binary(join(re:split("BAD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[trim]))),
<<":A:D">> = iolist_to_binary(join(re:split("BAD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[{parts,
2}]))),
<<":A:D">> = iolist_to_binary(join(re:split("BAD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[]))),
<<":C">> = iolist_to_binary(join(re:split("BCD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[trim]))),
<<":C:">> = iolist_to_binary(join(re:split("BCD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[{parts,
2}]))),
<<":C:">> = iolist_to_binary(join(re:split("BCD","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[]))),
<<":A:X">> = iolist_to_binary(join(re:split("BAX","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[trim]))),
<<":A:X">> = iolist_to_binary(join(re:split("BAX","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[{parts,
2}]))),
<<":A:X">> = iolist_to_binary(join(re:split("BAX","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[]))),
<<"ACX">> = iolist_to_binary(join(re:split("ACX","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[trim]))),
<<"ACX">> = iolist_to_binary(join(re:split("ACX","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[{parts,
2}]))),
<<"ACX">> = iolist_to_binary(join(re:split("ACX","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[trim]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[{parts,
2}]))),
<<"ABC">> = iolist_to_binary(join(re:split("ABC","(?:(?1)|B)(A(*ACCEPT)XX|C)D",[]))),
<<"">> = iolist_to_binary(join(re:split("BAC","(?(DEFINE)(A))B(?1)C",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("BAC","(?(DEFINE)(A))B(?1)C",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("BAC","(?(DEFINE)(A))B(?1)C",[]))),
<<"">> = iolist_to_binary(join(re:split("BAAC","(?(DEFINE)((A)\\2))B(?1)C",[trim]))),
<<":::">> = iolist_to_binary(join(re:split("BAAC","(?(DEFINE)((A)\\2))B(?1)C",[{parts,
2}]))),
<<":::">> = iolist_to_binary(join(re:split("BAAC","(?(DEFINE)((A)\\2))B(?1)C",[]))),
<<":(ab(cd)ef):ef">> = iolist_to_binary(join(re:split("(ab(cd)ef)","(?<pn> \\( ( [^()]++ | (?&pn) )* \\) )",[extended,
trim]))),
<<":(ab(cd)ef):ef:">> = iolist_to_binary(join(re:split("(ab(cd)ef)","(?<pn> \\( ( [^()]++ | (?&pn) )* \\) )",[extended,
{parts,
2}]))),
<<":(ab(cd)ef):ef:">> = iolist_to_binary(join(re:split("(ab(cd)ef)","(?<pn> \\( ( [^()]++ | (?&pn) )* \\) )",[extended]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?=a(*SKIP)b|ac)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?=a(*SKIP)b|ac)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?=a(*SKIP)b|ac)",[]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?=a(*SKIP)b|ac)",[trim]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?=a(*SKIP)b|ac)",[{parts,
2}]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?=a(*SKIP)b|ac)",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(?=a(*PRUNE)b)",[trim]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(?=a(*PRUNE)b)",[{parts,
2}]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","^(?=a(*PRUNE)b)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?=a(*PRUNE)b)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?=a(*PRUNE)b)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?=a(*PRUNE)b)",[]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?=a(*PRUNE)b)",[trim]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?=a(*PRUNE)b)",[{parts,
2}]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?=a(*PRUNE)b)",[]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?=a(*ACCEPT)b)",[trim]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?=a(*ACCEPT)b)",[{parts,
2}]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?=a(*ACCEPT)b)",[]))),
<<"a">> = iolist_to_binary(join(re:split("ab","(?>a\\Kb)",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("ab","(?>a\\Kb)",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("ab","(?>a\\Kb)",[]))),
<<"a:ab">> = iolist_to_binary(join(re:split("ab","((?>a\\Kb))",[trim]))),
<<"a:ab:">> = iolist_to_binary(join(re:split("ab","((?>a\\Kb))",[{parts,
2}]))),
<<"a:ab:">> = iolist_to_binary(join(re:split("ab","((?>a\\Kb))",[]))),
<<"a:ab">> = iolist_to_binary(join(re:split("ab","(a\\Kb)",[trim]))),
<<"a:ab:">> = iolist_to_binary(join(re:split("ab","(a\\Kb)",[{parts,
2}]))),
<<"a:ab:">> = iolist_to_binary(join(re:split("ab","(a\\Kb)",[]))),
<<"">> = iolist_to_binary(join(re:split("ac","^a\\Kcz|ac",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ac","^a\\Kcz|ac",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ac","^a\\Kcz|ac",[]))),
<<"">> = iolist_to_binary(join(re:split("ab","(?>a\\Kbz|ab)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?>a\\Kbz|ab)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ab","(?>a\\Kbz|ab)",[]))),
<<"a">> = iolist_to_binary(join(re:split("ab","^(?&t)(?(DEFINE)(?<t>a\\Kb))$",[trim]))),
<<"a::">> = iolist_to_binary(join(re:split("ab","^(?&t)(?(DEFINE)(?<t>a\\Kb))$",[{parts,
2}]))),
<<"a::">> = iolist_to_binary(join(re:split("ab","^(?&t)(?(DEFINE)(?<t>a\\Kb))$",[]))),
<<":c">> = iolist_to_binary(join(re:split("a(b)c","^([^()]|\\((?1)*\\))*$",[trim]))),
<<":c:">> = iolist_to_binary(join(re:split("a(b)c","^([^()]|\\((?1)*\\))*$",[{parts,
2}]))),
<<":c:">> = iolist_to_binary(join(re:split("a(b)c","^([^()]|\\((?1)*\\))*$",[]))),
<<":e">> = iolist_to_binary(join(re:split("a(b(c)d)e","^([^()]|\\((?1)*\\))*$",[trim]))),
<<":e:">> = iolist_to_binary(join(re:split("a(b(c)d)e","^([^()]|\\((?1)*\\))*$",[{parts,
2}]))),
<<":e:">> = iolist_to_binary(join(re:split("a(b(c)d)e","^([^()]|\\((?1)*\\))*$",[]))),
<<":0">> = iolist_to_binary(join(re:split("0","(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))",[trim]))),
<<":0::">> = iolist_to_binary(join(re:split("0","(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))",[{parts,
2}]))),
<<":0::">> = iolist_to_binary(join(re:split("0","(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))",[]))),
<<":00:0">> = iolist_to_binary(join(re:split("00","(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))",[trim]))),
<<":00:0:">> = iolist_to_binary(join(re:split("00","(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))",[{parts,
2}]))),
<<":00:0:">> = iolist_to_binary(join(re:split("00","(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))",[]))),
<<":0000:0">> = iolist_to_binary(join(re:split("0000","(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))",[trim]))),
<<":0000:0:">> = iolist_to_binary(join(re:split("0000","(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))",[{parts,
2}]))),
<<":0000:0:">> = iolist_to_binary(join(re:split("0000","(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))",[]))),
ok.
run44() ->
<<":0:0">> = iolist_to_binary(join(re:split("0","(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))",[trim]))),
<<":0:0:">> = iolist_to_binary(join(re:split("0","(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))",[{parts,
2}]))),
<<":0:0:">> = iolist_to_binary(join(re:split("0","(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))",[]))),
<<":0:0::0:0">> = iolist_to_binary(join(re:split("00","(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))",[trim]))),
<<":0:0:0">> = iolist_to_binary(join(re:split("00","(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))",[{parts,
2}]))),
<<":0:0::0:0:">> = iolist_to_binary(join(re:split("00","(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))",[]))),
<<":0:0::0:0::0:0::0:0">> = iolist_to_binary(join(re:split("0000","(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))",[trim]))),
<<":0:0:000">> = iolist_to_binary(join(re:split("0000","(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))",[{parts,
2}]))),
<<":0:0::0:0::0:0::0:0:">> = iolist_to_binary(join(re:split("0000","(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))",[]))),
<<"ACABX">> = iolist_to_binary(join(re:split("ACABX","A(*COMMIT)(B|D)",[trim]))),
<<"ACABX">> = iolist_to_binary(join(re:split("ACABX","A(*COMMIT)(B|D)",[{parts,
2}]))),
<<"ACABX">> = iolist_to_binary(join(re:split("ACABX","A(*COMMIT)(B|D)",[]))),
<<":A:B:C:DEFG">> = iolist_to_binary(join(re:split("ABCDEFG","(*COMMIT)(A|P)(B|P)(C|P)",[trim]))),
<<":A:B:C:DEFG">> = iolist_to_binary(join(re:split("ABCDEFG","(*COMMIT)(A|P)(B|P)(C|P)",[{parts,
2}]))),
<<":A:B:C:DEFG">> = iolist_to_binary(join(re:split("ABCDEFG","(*COMMIT)(A|P)(B|P)(C|P)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(*COMMIT)(A|P)(B|P)(C|P)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(*COMMIT)(A|P)(B|P)(C|P)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(*COMMIT)(A|P)(B|P)(C|P)",[]))),
<<"DEFGABC">> = iolist_to_binary(join(re:split("DEFGABC","(*COMMIT)(A|P)(B|P)(C|P)",[trim]))),
<<"DEFGABC">> = iolist_to_binary(join(re:split("DEFGABC","(*COMMIT)(A|P)(B|P)(C|P)",[{parts,
2}]))),
<<"DEFGABC">> = iolist_to_binary(join(re:split("DEFGABC","(*COMMIT)(A|P)(B|P)(C|P)",[]))),
<<":a">> = iolist_to_binary(join(re:split("abbb","(\\w+)(?>b(*COMMIT))\\w{2}",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("abbb","(\\w+)(?>b(*COMMIT))\\w{2}",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("abbb","(\\w+)(?>b(*COMMIT))\\w{2}",[]))),
<<"abbb">> = iolist_to_binary(join(re:split("abbb","(\\w+)b(*COMMIT)\\w{2}",[trim]))),
<<"abbb">> = iolist_to_binary(join(re:split("abbb","(\\w+)b(*COMMIT)\\w{2}",[{parts,
2}]))),
<<"abbb">> = iolist_to_binary(join(re:split("abbb","(\\w+)b(*COMMIT)\\w{2}",[]))),
<<"b::c">> = iolist_to_binary(join(re:split("bac","(?&t)(?#()(?(DEFINE)(?<t>a))",[trim]))),
<<"b::c">> = iolist_to_binary(join(re:split("bac","(?&t)(?#()(?(DEFINE)(?<t>a))",[{parts,
2}]))),
<<"b::c">> = iolist_to_binary(join(re:split("bac","(?&t)(?#()(?(DEFINE)(?<t>a))",[]))),
<<"yes">> = iolist_to_binary(join(re:split("yes","(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?",[trim]))),
<<"yes">> = iolist_to_binary(join(re:split("yes","(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?",[{parts,
2}]))),
<<"yes">> = iolist_to_binary(join(re:split("yes","(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?",[]))),
<<"yes">> = iolist_to_binary(join(re:split("yes","(?>(*COMMIT)(yes|no)(*THEN)(*F))?",[trim]))),
<<"yes">> = iolist_to_binary(join(re:split("yes","(?>(*COMMIT)(yes|no)(*THEN)(*F))?",[{parts,
2}]))),
<<"yes">> = iolist_to_binary(join(re:split("yes","(?>(*COMMIT)(yes|no)(*THEN)(*F))?",[]))),
ok.
run45() ->
<<"">> = iolist_to_binary(join(re:split("bc","b?(*SKIP)c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("bc","b?(*SKIP)c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("bc","b?(*SKIP)c",[]))),
<<"a">> = iolist_to_binary(join(re:split("abc","b?(*SKIP)c",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("abc","b?(*SKIP)c",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("abc","b?(*SKIP)c",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","(*SKIP)bc",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","(*SKIP)bc",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","(*SKIP)bc",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","(*SKIP)b",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","(*SKIP)b",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","(*SKIP)b",[]))),
<<"x::x::x">> = iolist_to_binary(join(re:split("xxx","(?P<abn>(?P=abn)xxx|)+",[trim]))),
<<"x::xx">> = iolist_to_binary(join(re:split("xxx","(?P<abn>(?P=abn)xxx|)+",[{parts,
2}]))),
<<"x::x::x::">> = iolist_to_binary(join(re:split("xxx","(?P<abn>(?P=abn)xxx|)+",[]))),
<<":a">> = iolist_to_binary(join(re:split("aa","(?i:([^b]))(?1)",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aa","(?i:([^b]))(?1)",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aa","(?i:([^b]))(?1)",[]))),
<<":a">> = iolist_to_binary(join(re:split("aA","(?i:([^b]))(?1)",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aA","(?i:([^b]))(?1)",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aA","(?i:([^b]))(?1)",[]))),
<<":*:: ::a::l::r">> = iolist_to_binary(join(re:split("** Failers","(?i:([^b]))(?1)",[trim]))),
<<":*: Failers">> = iolist_to_binary(join(re:split("** Failers","(?i:([^b]))(?1)",[{parts,
2}]))),
<<":*:: ::a::l::r:">> = iolist_to_binary(join(re:split("** Failers","(?i:([^b]))(?1)",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","(?i:([^b]))(?1)",[trim]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","(?i:([^b]))(?1)",[{parts,
2}]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","(?i:([^b]))(?1)",[]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?i:([^b]))(?1)",[trim]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?i:([^b]))(?1)",[{parts,
2}]))),
<<"aB">> = iolist_to_binary(join(re:split("aB","(?i:([^b]))(?1)",[]))),
<<"Ba">> = iolist_to_binary(join(re:split("Ba","(?i:([^b]))(?1)",[trim]))),
<<"Ba">> = iolist_to_binary(join(re:split("Ba","(?i:([^b]))(?1)",[{parts,
2}]))),
<<"Ba">> = iolist_to_binary(join(re:split("Ba","(?i:([^b]))(?1)",[]))),
<<"ba">> = iolist_to_binary(join(re:split("ba","(?i:([^b]))(?1)",[trim]))),
<<"ba">> = iolist_to_binary(join(re:split("ba","(?i:([^b]))(?1)",[{parts,
2}]))),
<<"ba">> = iolist_to_binary(join(re:split("ba","(?i:([^b]))(?1)",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaaX","^(?&t)*+(?(DEFINE)(?<t>a))\\w$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaaaX","^(?&t)*+(?(DEFINE)(?<t>a))\\w$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaaaX","^(?&t)*+(?(DEFINE)(?<t>a))\\w$",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?&t)*+(?(DEFINE)(?<t>a))\\w$",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?&t)*+(?(DEFINE)(?<t>a))\\w$",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?&t)*+(?(DEFINE)(?<t>a))\\w$",[]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(?&t)*+(?(DEFINE)(?<t>a))\\w$",[trim]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(?&t)*+(?(DEFINE)(?<t>a))\\w$",[{parts,
2}]))),
<<"aaaaaa">> = iolist_to_binary(join(re:split("aaaaaa","^(?&t)*+(?(DEFINE)(?<t>a))\\w$",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaaX","^(?&t)*(?(DEFINE)(?<t>a))\\w$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaaaX","^(?&t)*(?(DEFINE)(?<t>a))\\w$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaaaX","^(?&t)*(?(DEFINE)(?<t>a))\\w$",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaa","^(?&t)*(?(DEFINE)(?<t>a))\\w$",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaaa","^(?&t)*(?(DEFINE)(?<t>a))\\w$",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aaaaaa","^(?&t)*(?(DEFINE)(?<t>a))\\w$",[]))),
<<":a:X">> = iolist_to_binary(join(re:split("aaaaX","^(a)*+(\\w)",[trim]))),
<<":a:X:">> = iolist_to_binary(join(re:split("aaaaX","^(a)*+(\\w)",[{parts,
2}]))),
<<":a:X:">> = iolist_to_binary(join(re:split("aaaaX","^(a)*+(\\w)",[]))),
<<"::Y:Z">> = iolist_to_binary(join(re:split("YZ","^(a)*+(\\w)",[trim]))),
<<"::Y:Z">> = iolist_to_binary(join(re:split("YZ","^(a)*+(\\w)",[{parts,
2}]))),
<<"::Y:Z">> = iolist_to_binary(join(re:split("YZ","^(a)*+(\\w)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a)*+(\\w)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a)*+(\\w)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a)*+(\\w)",[]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(a)*+(\\w)",[trim]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(a)*+(\\w)",[{parts,
2}]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(a)*+(\\w)",[]))),
<<":X">> = iolist_to_binary(join(re:split("aaaaX","^(?:a)*+(\\w)",[trim]))),
<<":X:">> = iolist_to_binary(join(re:split("aaaaX","^(?:a)*+(\\w)",[{parts,
2}]))),
<<":X:">> = iolist_to_binary(join(re:split("aaaaX","^(?:a)*+(\\w)",[]))),
<<":Y:Z">> = iolist_to_binary(join(re:split("YZ","^(?:a)*+(\\w)",[trim]))),
<<":Y:Z">> = iolist_to_binary(join(re:split("YZ","^(?:a)*+(\\w)",[{parts,
2}]))),
<<":Y:Z">> = iolist_to_binary(join(re:split("YZ","^(?:a)*+(\\w)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:a)*+(\\w)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:a)*+(\\w)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:a)*+(\\w)",[]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(?:a)*+(\\w)",[trim]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(?:a)*+(\\w)",[{parts,
2}]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(?:a)*+(\\w)",[]))),
<<":a:X">> = iolist_to_binary(join(re:split("aaaaX","^(a)++(\\w)",[trim]))),
<<":a:X:">> = iolist_to_binary(join(re:split("aaaaX","^(a)++(\\w)",[{parts,
2}]))),
<<":a:X:">> = iolist_to_binary(join(re:split("aaaaX","^(a)++(\\w)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a)++(\\w)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a)++(\\w)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a)++(\\w)",[]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(a)++(\\w)",[trim]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(a)++(\\w)",[{parts,
2}]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(a)++(\\w)",[]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(a)++(\\w)",[trim]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(a)++(\\w)",[{parts,
2}]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(a)++(\\w)",[]))),
<<":X">> = iolist_to_binary(join(re:split("aaaaX","^(?:a)++(\\w)",[trim]))),
<<":X:">> = iolist_to_binary(join(re:split("aaaaX","^(?:a)++(\\w)",[{parts,
2}]))),
<<":X:">> = iolist_to_binary(join(re:split("aaaaX","^(?:a)++(\\w)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:a)++(\\w)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:a)++(\\w)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:a)++(\\w)",[]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(?:a)++(\\w)",[trim]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(?:a)++(\\w)",[{parts,
2}]))),
<<"aaaa">> = iolist_to_binary(join(re:split("aaaa","^(?:a)++(\\w)",[]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(?:a)++(\\w)",[trim]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(?:a)++(\\w)",[{parts,
2}]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(?:a)++(\\w)",[]))),
<<":a:a:aaX">> = iolist_to_binary(join(re:split("aaaaX","^(a)?+(\\w)",[trim]))),
<<":a:a:aaX">> = iolist_to_binary(join(re:split("aaaaX","^(a)?+(\\w)",[{parts,
2}]))),
<<":a:a:aaX">> = iolist_to_binary(join(re:split("aaaaX","^(a)?+(\\w)",[]))),
<<"::Y:Z">> = iolist_to_binary(join(re:split("YZ","^(a)?+(\\w)",[trim]))),
<<"::Y:Z">> = iolist_to_binary(join(re:split("YZ","^(a)?+(\\w)",[{parts,
2}]))),
<<"::Y:Z">> = iolist_to_binary(join(re:split("YZ","^(a)?+(\\w)",[]))),
<<":a:aaX">> = iolist_to_binary(join(re:split("aaaaX","^(?:a)?+(\\w)",[trim]))),
<<":a:aaX">> = iolist_to_binary(join(re:split("aaaaX","^(?:a)?+(\\w)",[{parts,
2}]))),
<<":a:aaX">> = iolist_to_binary(join(re:split("aaaaX","^(?:a)?+(\\w)",[]))),
<<":Y:Z">> = iolist_to_binary(join(re:split("YZ","^(?:a)?+(\\w)",[trim]))),
<<":Y:Z">> = iolist_to_binary(join(re:split("YZ","^(?:a)?+(\\w)",[{parts,
2}]))),
<<":Y:Z">> = iolist_to_binary(join(re:split("YZ","^(?:a)?+(\\w)",[]))),
<<":a:X">> = iolist_to_binary(join(re:split("aaaaX","^(a){2,}+(\\w)",[trim]))),
<<":a:X:">> = iolist_to_binary(join(re:split("aaaaX","^(a){2,}+(\\w)",[{parts,
2}]))),
<<":a:X:">> = iolist_to_binary(join(re:split("aaaaX","^(a){2,}+(\\w)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a){2,}+(\\w)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a){2,}+(\\w)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(a){2,}+(\\w)",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a){2,}+(\\w)",[trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a){2,}+(\\w)",[{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(a){2,}+(\\w)",[]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(a){2,}+(\\w)",[trim]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(a){2,}+(\\w)",[{parts,
2}]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(a){2,}+(\\w)",[]))),
<<":X">> = iolist_to_binary(join(re:split("aaaaX","^(?:a){2,}+(\\w)",[trim]))),
<<":X:">> = iolist_to_binary(join(re:split("aaaaX","^(?:a){2,}+(\\w)",[{parts,
2}]))),
<<":X:">> = iolist_to_binary(join(re:split("aaaaX","^(?:a){2,}+(\\w)",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:a){2,}+(\\w)",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:a){2,}+(\\w)",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","^(?:a){2,}+(\\w)",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(?:a){2,}+(\\w)",[trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(?:a){2,}+(\\w)",[{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^(?:a){2,}+(\\w)",[]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(?:a){2,}+(\\w)",[trim]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(?:a){2,}+(\\w)",[{parts,
2}]))),
<<"YZ">> = iolist_to_binary(join(re:split("YZ","^(?:a){2,}+(\\w)",[]))),
<<"">> = iolist_to_binary(join(re:split("b","(a|)*(?1)b",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","(a|)*(?1)b",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","(a|)*(?1)b",[]))),
<<"">> = iolist_to_binary(join(re:split("ab","(a|)*(?1)b",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("ab","(a|)*(?1)b",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("ab","(a|)*(?1)b",[]))),
<<"">> = iolist_to_binary(join(re:split("aab","(a|)*(?1)b",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aab","(a|)*(?1)b",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aab","(a|)*(?1)b",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(a)++(?1)b",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(a)++(?1)b",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(a)++(?1)b",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","(a)++(?1)b",[trim]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","(a)++(?1)b",[{parts,
2}]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","(a)++(?1)b",[]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","(a)++(?1)b",[trim]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","(a)++(?1)b",[{parts,
2}]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","(a)++(?1)b",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(a)*+(?1)b",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(a)*+(?1)b",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(a)*+(?1)b",[]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","(a)*+(?1)b",[trim]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","(a)*+(?1)b",[{parts,
2}]))),
<<"ab">> = iolist_to_binary(join(re:split("ab","(a)*+(?1)b",[]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","(a)*+(?1)b",[trim]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","(a)*+(?1)b",[{parts,
2}]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","(a)*+(?1)b",[]))),
<<"">> = iolist_to_binary(join(re:split("b","(?1)(?:(b)){0}",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("b","(?1)(?:(b)){0}",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("b","(?1)(?:(b)){0}",[]))),
<<":foo(bar(baz)+baz(bop)):(bar(baz)+baz(bop)):bar(baz)+baz(bop)">> = iolist_to_binary(join(re:split("foo(bar(baz)+baz(bop))","(foo ( \\( ((?:(?> [^()]+ )|(?2))*) \\) ) )",[extended,
trim]))),
<<":foo(bar(baz)+baz(bop)):(bar(baz)+baz(bop)):bar(baz)+baz(bop):">> = iolist_to_binary(join(re:split("foo(bar(baz)+baz(bop))","(foo ( \\( ((?:(?> [^()]+ )|(?2))*) \\) ) )",[extended,
{parts,
2}]))),
<<":foo(bar(baz)+baz(bop)):(bar(baz)+baz(bop)):bar(baz)+baz(bop):">> = iolist_to_binary(join(re:split("foo(bar(baz)+baz(bop))","(foo ( \\( ((?:(?> [^()]+ )|(?2))*) \\) ) )",[extended]))),
ok.
run46() ->
<<":AB:B">> = iolist_to_binary(join(re:split("AB","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
trim]))),
<<":AB:B::">> = iolist_to_binary(join(re:split("AB","(A (A|B(*ACCEPT)|C) D)(E)",[extended,
{parts,
2}]))),
<<":AB:B::">> = iolist_to_binary(join(re:split("AB","(A (A|B(*ACCEPT)|C) D)(E)",[extended]))),
<<":a">> = iolist_to_binary(join(re:split("ba","\\A.*?(a|bc)",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("ba","\\A.*?(a|bc)",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("ba","\\A.*?(a|bc)",[]))),
<<"">> = iolist_to_binary(join(re:split("ba","\\A.*?(?:a|bc)++",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ba","\\A.*?(?:a|bc)++",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ba","\\A.*?(?:a|bc)++",[]))),
<<":a">> = iolist_to_binary(join(re:split("ba","\\A.*?(a|bc)++",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("ba","\\A.*?(a|bc)++",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("ba","\\A.*?(a|bc)++",[]))),
<<"">> = iolist_to_binary(join(re:split("ba","\\A.*?(?:a|bc|d)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ba","\\A.*?(?:a|bc|d)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ba","\\A.*?(?:a|bc|d)",[]))),
<<":b:eetle">> = iolist_to_binary(join(re:split("beetle","(?:(b))++",[trim]))),
<<":b:eetle">> = iolist_to_binary(join(re:split("beetle","(?:(b))++",[{parts,
2}]))),
<<":b:eetle">> = iolist_to_binary(join(re:split("beetle","(?:(b))++",[]))),
<<":a">> = iolist_to_binary(join(re:split("a","(?(?=(a(*ACCEPT)z))a)",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("a","(?(?=(a(*ACCEPT)z))a)",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("a","(?(?=(a(*ACCEPT)z))a)",[]))),
<<":a">> = iolist_to_binary(join(re:split("aaaab","^(a)(?1)+ab",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a)(?1)+ab",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("aaaab","^(a)(?1)+ab",[]))),
<<"aaaab">> = iolist_to_binary(join(re:split("aaaab","^(a)(?1)++ab",[trim]))),
<<"aaaab">> = iolist_to_binary(join(re:split("aaaab","^(a)(?1)++ab",[{parts,
2}]))),
<<"aaaab">> = iolist_to_binary(join(re:split("aaaab","^(a)(?1)++ab",[]))),
<<"::ckgammon">> = iolist_to_binary(join(re:split("backgammon","(?(DEFINE)(a))?b(?1)",[trim]))),
<<"::ckgammon">> = iolist_to_binary(join(re:split("backgammon","(?(DEFINE)(a))?b(?1)",[{parts,
2}]))),
<<"::ckgammon">> = iolist_to_binary(join(re:split("backgammon","(?(DEFINE)(a))?b(?1)",[]))),
<<":
def">> = iolist_to_binary(join(re:split("abc
def","^\\N+",[trim]))),
<<":
def">> = iolist_to_binary(join(re:split("abc
def","^\\N+",[{parts,2}]))),
<<":
def">> = iolist_to_binary(join(re:split("abc
def","^\\N+",[]))),
<<":
def">> = iolist_to_binary(join(re:split("abc
def","^\\N{1,}",[trim]))),
<<":
def">> = iolist_to_binary(join(re:split("abc
def","^\\N{1,}",[{parts,2}]))),
<<":
def">> = iolist_to_binary(join(re:split("abc
def","^\\N{1,}",[]))),
<<":cde">> = iolist_to_binary(join(re:split("aaaabcde","(?(R)a+|(?R)b)",[trim]))),
<<":cde">> = iolist_to_binary(join(re:split("aaaabcde","(?(R)a+|(?R)b)",[{parts,
2}]))),
<<":cde">> = iolist_to_binary(join(re:split("aaaabcde","(?(R)a+|(?R)b)",[]))),
<<":aaaa:cde">> = iolist_to_binary(join(re:split("aaaabcde","(?(R)a+|((?R))b)",[trim]))),
<<":aaaa:cde">> = iolist_to_binary(join(re:split("aaaabcde","(?(R)a+|((?R))b)",[{parts,
2}]))),
<<":aaaa:cde">> = iolist_to_binary(join(re:split("aaaabcde","(?(R)a+|((?R))b)",[]))),
<<":aaaab:cde">> = iolist_to_binary(join(re:split("aaaabcde","((?(R)a+|(?1)b))",[trim]))),
<<":aaaab:cde">> = iolist_to_binary(join(re:split("aaaabcde","((?(R)a+|(?1)b))",[{parts,
2}]))),
<<":aaaab:cde">> = iolist_to_binary(join(re:split("aaaabcde","((?(R)a+|(?1)b))",[]))),
<<":aaaab:cde">> = iolist_to_binary(join(re:split("aaaabcde","((?(R1)a+|(?1)b))",[trim]))),
<<":aaaab:cde">> = iolist_to_binary(join(re:split("aaaabcde","((?(R1)a+|(?1)b))",[{parts,
2}]))),
<<":aaaab:cde">> = iolist_to_binary(join(re:split("aaaabcde","((?(R1)a+|(?1)b))",[]))),
<<"">> = iolist_to_binary(join(re:split("a","(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("a","(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("a","(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))",[]))),
<<"b">> = iolist_to_binary(join(re:split("ba","(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))",[trim]))),
<<"b::">> = iolist_to_binary(join(re:split("ba","(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))",[{parts,
2}]))),
<<"b::">> = iolist_to_binary(join(re:split("ba","(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))",[]))),
<<"bb">> = iolist_to_binary(join(re:split("bba","(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))",[trim]))),
<<"bb::">> = iolist_to_binary(join(re:split("bba","(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))",[{parts,
2}]))),
<<"bb::">> = iolist_to_binary(join(re:split("bba","(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))",[]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b) c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b) c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b) c",[extended]))),
ok.
run47() ->
<<":ab">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b|(*F)) c",[extended,
trim]))),
<<":ab:">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b|(*F)) c",[extended,
{parts,
2}]))),
<<":ab:">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b|(*F)) c",[extended]))),
<<":ab:ab">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b) | (*F) ) c",[extended,
trim]))),
<<":ab:ab:">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b) | (*F) ) c",[extended,
{parts,
2}]))),
<<":ab:ab:">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b) | (*F) ) c",[extended]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b) ) c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b) ) c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b) ) c",[extended]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b) c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b) c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b) c",[extended]))),
<<"">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b|(*F)) c",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b|(*F)) c",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b|(*F)) c",[extended]))),
<<"">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b) | (*F) ) c",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b) | (*F) ) c",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b) | (*F) ) c",[extended]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b) ) c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b) ) c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b) ) c",[extended]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?>a(*THEN)b) c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?>a(*THEN)b) c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?>a(*THEN)b) c",[extended]))),
<<"">> = iolist_to_binary(join(re:split("aabc","^.*? (?>a(*THEN)b|(*F)) c",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?>a(*THEN)b|(*F)) c",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?>a(*THEN)b|(*F)) c",[extended]))),
<<"">> = iolist_to_binary(join(re:split("aabc","^.*? (?> (?>a(*THEN)b) | (*F) ) c",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?> (?>a(*THEN)b) | (*F) ) c",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?> (?>a(*THEN)b) | (*F) ) c",[extended]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?> (?>a(*THEN)b) ) c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?> (?>a(*THEN)b) ) c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?> (?>a(*THEN)b) ) c",[extended]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b)++ c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b)++ c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b)++ c",[extended]))),
<<":ab">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b|(*F))++ c",[extended,
trim]))),
<<":ab:">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b|(*F))++ c",[extended,
{parts,
2}]))),
<<":ab:">> = iolist_to_binary(join(re:split("aabc","^.*? (a(*THEN)b|(*F))++ c",[extended]))),
<<":ab:ab">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b)++ | (*F) )++ c",[extended,
trim]))),
<<":ab:ab:">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b)++ | (*F) )++ c",[extended,
{parts,
2}]))),
<<":ab:ab:">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b)++ | (*F) )++ c",[extended]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b)++ )++ c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b)++ )++ c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? ( (a(*THEN)b)++ )++ c",[extended]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b)++ c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b)++ c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b)++ c",[extended]))),
ok.
run48() ->
<<"">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b|(*F))++ c",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b|(*F))++ c",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?:a(*THEN)b|(*F))++ c",[extended]))),
<<"">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c",[extended,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c",[extended,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c",[extended]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b)++ )++ c",[extended,
trim]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b)++ )++ c",[extended,
{parts,
2}]))),
<<"aabc">> = iolist_to_binary(join(re:split("aabc","^.*? (?: (?:a(*THEN)b)++ )++ c",[extended]))),
<<"">> = iolist_to_binary(join(re:split("ac","^(?(?=a(*THEN)b)ab|ac)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ac","^(?(?=a(*THEN)b)ab|ac)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ac","^(?(?=a(*THEN)b)ab|ac)",[]))),
<<"ba">> = iolist_to_binary(join(re:split("ba","^.*?(?(?=a)a|b(*THEN)c)",[trim]))),
<<"ba">> = iolist_to_binary(join(re:split("ba","^.*?(?(?=a)a|b(*THEN)c)",[{parts,
2}]))),
<<"ba">> = iolist_to_binary(join(re:split("ba","^.*?(?(?=a)a|b(*THEN)c)",[]))),
<<"">> = iolist_to_binary(join(re:split("ba","^.*?(?:(?(?=a)a|b(*THEN)c)|d)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ba","^.*?(?:(?(?=a)a|b(*THEN)c)|d)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ba","^.*?(?:(?(?=a)a|b(*THEN)c)|d)",[]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^.*?(?(?=a)a(*THEN)b|c)",[trim]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^.*?(?(?=a)a(*THEN)b|c)",[{parts,
2}]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^.*?(?(?=a)a(*THEN)b|c)",[]))),
<<":abc">> = iolist_to_binary(join(re:split("aabc","^.*(?=a(*THEN)b)",[trim]))),
<<":abc">> = iolist_to_binary(join(re:split("aabc","^.*(?=a(*THEN)b)",[{parts,
2}]))),
<<":abc">> = iolist_to_binary(join(re:split("aabc","^.*(?=a(*THEN)b)",[]))),
<<"xa:d">> = iolist_to_binary(join(re:split("xacd","(?<=a(*ACCEPT)b)c",[trim]))),
<<"xa:d">> = iolist_to_binary(join(re:split("xacd","(?<=a(*ACCEPT)b)c",[{parts,
2}]))),
<<"xa:d">> = iolist_to_binary(join(re:split("xacd","(?<=a(*ACCEPT)b)c",[]))),
<<"xa:a:d">> = iolist_to_binary(join(re:split("xacd","(?<=(a(*ACCEPT)b))c",[trim]))),
<<"xa:a:d">> = iolist_to_binary(join(re:split("xacd","(?<=(a(*ACCEPT)b))c",[{parts,
2}]))),
<<"xa:a:d">> = iolist_to_binary(join(re:split("xacd","(?<=(a(*ACCEPT)b))c",[]))),
<<"xab:ab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=(a(*COMMIT)b))c",[trim]))),
<<"xab:ab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=(a(*COMMIT)b))c",[{parts,
2}]))),
<<"xab:ab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=(a(*COMMIT)b))c",[]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=(a(*COMMIT)b))c",[trim]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=(a(*COMMIT)b))c",[{parts,
2}]))),
<<"** Failers">> = iolist_to_binary(join(re:split("** Failers","(?<=(a(*COMMIT)b))c",[]))),
<<"xacd">> = iolist_to_binary(join(re:split("xacd","(?<=(a(*COMMIT)b))c",[trim]))),
<<"xacd">> = iolist_to_binary(join(re:split("xacd","(?<=(a(*COMMIT)b))c",[{parts,
2}]))),
<<"xacd">> = iolist_to_binary(join(re:split("xacd","(?<=(a(*COMMIT)b))c",[]))),
<<"x:d">> = iolist_to_binary(join(re:split("xcd","(?<!a(*FAIL)b)c",[trim]))),
<<"x:d">> = iolist_to_binary(join(re:split("xcd","(?<!a(*FAIL)b)c",[{parts,
2}]))),
<<"x:d">> = iolist_to_binary(join(re:split("xcd","(?<!a(*FAIL)b)c",[]))),
<<"a:d">> = iolist_to_binary(join(re:split("acd","(?<!a(*FAIL)b)c",[trim]))),
<<"a:d">> = iolist_to_binary(join(re:split("acd","(?<!a(*FAIL)b)c",[{parts,
2}]))),
<<"a:d">> = iolist_to_binary(join(re:split("acd","(?<!a(*FAIL)b)c",[]))),
<<"xab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=a(*PRUNE)b)c",[trim]))),
<<"xab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=a(*PRUNE)b)c",[{parts,
2}]))),
<<"xab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=a(*PRUNE)b)c",[]))),
<<"xab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=a(*SKIP)b)c",[trim]))),
<<"xab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=a(*SKIP)b)c",[{parts,
2}]))),
<<"xab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=a(*SKIP)b)c",[]))),
<<"xab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=a(*THEN)b)c",[trim]))),
<<"xab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=a(*THEN)b)c",[{parts,
2}]))),
<<"xab:d">> = iolist_to_binary(join(re:split("xabcd","(?<=a(*THEN)b)c",[]))),
<<":a:d">> = iolist_to_binary(join(re:split("abcd","(a)(?2){2}(.)",[trim]))),
<<":a:d:">> = iolist_to_binary(join(re:split("abcd","(a)(?2){2}(.)",[{parts,
2}]))),
<<":a:d:">> = iolist_to_binary(join(re:split("abcd","(a)(?2){2}(.)",[]))),
ok.
run49() ->
<<"hello world ">> = iolist_to_binary(join(re:split("hello world test","(another)?(\\1?)test",[trim]))),
<<"hello world :::">> = iolist_to_binary(join(re:split("hello world test","(another)?(\\1?)test",[{parts,
2}]))),
<<"hello world :::">> = iolist_to_binary(join(re:split("hello world test","(another)?(\\1?)test",[]))),
<<"hello world test">> = iolist_to_binary(join(re:split("hello world test","(another)?(\\1+)test",[trim]))),
<<"hello world test">> = iolist_to_binary(join(re:split("hello world test","(another)?(\\1+)test",[{parts,
2}]))),
<<"hello world test">> = iolist_to_binary(join(re:split("hello world test","(another)?(\\1+)test",[]))),
<<"">> = iolist_to_binary(join(re:split("aac","(a(*COMMIT)b){0}a(?1)|aac",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aac","(a(*COMMIT)b){0}a(?1)|aac",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aac","(a(*COMMIT)b){0}a(?1)|aac",[]))),
<<"">> = iolist_to_binary(join(re:split("aac","((?:a?)*)*c",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aac","((?:a?)*)*c",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aac","((?:a?)*)*c",[]))),
<<"">> = iolist_to_binary(join(re:split("aac","((?>a?)*)*c",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("aac","((?>a?)*)*c",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("aac","((?>a?)*)*c",[]))),
<<"a">> = iolist_to_binary(join(re:split("aba","(?>.*?a)(?<=ba)",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("aba","(?>.*?a)(?<=ba)",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("aba","(?>.*?a)(?<=ba)",[]))),
<<"">> = iolist_to_binary(join(re:split("aba","(?:.*?a)(?<=ba)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aba","(?:.*?a)(?<=ba)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aba","(?:.*?a)(?<=ba)",[]))),
<<"a">> = iolist_to_binary(join(re:split("aab",".*?a(*PRUNE)b",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("aab",".*?a(*PRUNE)b",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("aab",".*?a(*PRUNE)b",[]))),
<<"a">> = iolist_to_binary(join(re:split("aab",".*?a(*PRUNE)b",[dotall,
trim]))),
<<"a:">> = iolist_to_binary(join(re:split("aab",".*?a(*PRUNE)b",[dotall,
{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("aab",".*?a(*PRUNE)b",[dotall]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^a(*PRUNE)b",[dotall,
trim]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^a(*PRUNE)b",[dotall,
{parts,
2}]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","^a(*PRUNE)b",[dotall]))),
<<"a">> = iolist_to_binary(join(re:split("aab",".*?a(*SKIP)b",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("aab",".*?a(*SKIP)b",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("aab",".*?a(*SKIP)b",[]))),
<<"a">> = iolist_to_binary(join(re:split("aab","(?>.*?a)b",[dotall,
trim]))),
<<"a:">> = iolist_to_binary(join(re:split("aab","(?>.*?a)b",[dotall,
{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("aab","(?>.*?a)b",[dotall]))),
<<"a">> = iolist_to_binary(join(re:split("aab","(?>.*?a)b",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("aab","(?>.*?a)b",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("aab","(?>.*?a)b",[]))),
ok.
run50() ->
<<"aab">> = iolist_to_binary(join(re:split("aab","(?>^a)b",[dotall,
trim]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","(?>^a)b",[dotall,
{parts,
2}]))),
<<"aab">> = iolist_to_binary(join(re:split("aab","(?>^a)b",[dotall]))),
<<"alphabetabcd:abcd">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*?)(?<=(abcd)|(wxyz))",[trim]))),
<<"alphabetabcd:abcd::">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*?)(?<=(abcd)|(wxyz))",[{parts,
2}]))),
<<"alphabetabcd:abcd::">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*?)(?<=(abcd)|(wxyz))",[]))),
<<"endingwxyz::wxyz">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*?)(?<=(abcd)|(wxyz))",[trim]))),
<<"endingwxyz::wxyz:">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*?)(?<=(abcd)|(wxyz))",[{parts,
2}]))),
<<"endingwxyz::wxyz:">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*?)(?<=(abcd)|(wxyz))",[]))),
<<":abcd">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*)(?<=(abcd)|(wxyz))",[trim]))),
<<":abcd::">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*)(?<=(abcd)|(wxyz))",[{parts,
2}]))),
<<":abcd::">> = iolist_to_binary(join(re:split("alphabetabcd","(?>.*)(?<=(abcd)|(wxyz))",[]))),
<<"::wxyz">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*)(?<=(abcd)|(wxyz))",[trim]))),
<<"::wxyz:">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*)(?<=(abcd)|(wxyz))",[{parts,
2}]))),
<<"::wxyz:">> = iolist_to_binary(join(re:split("endingwxyz","(?>.*)(?<=(abcd)|(wxyz))",[]))),
<<"abcdfooxyz">> = iolist_to_binary(join(re:split("abcdfooxyz","(?>.*)foo",[trim]))),
<<"abcdfooxyz">> = iolist_to_binary(join(re:split("abcdfooxyz","(?>.*)foo",[{parts,
2}]))),
<<"abcdfooxyz">> = iolist_to_binary(join(re:split("abcdfooxyz","(?>.*)foo",[]))),
<<"abcd:xyz">> = iolist_to_binary(join(re:split("abcdfooxyz","(?>.*?)foo",[trim]))),
<<"abcd:xyz">> = iolist_to_binary(join(re:split("abcdfooxyz","(?>.*?)foo",[{parts,
2}]))),
<<"abcd:xyz">> = iolist_to_binary(join(re:split("abcdfooxyz","(?>.*?)foo",[]))),
<<"">> = iolist_to_binary(join(re:split("ac","(?:(a(*PRUNE)b)){0}(?:(?1)|ac)",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("ac","(?:(a(*PRUNE)b)){0}(?:(?1)|ac)",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("ac","(?:(a(*PRUNE)b)){0}(?:(?1)|ac)",[]))),
<<"">> = iolist_to_binary(join(re:split("ac","(?:(a(*SKIP)b)){0}(?:(?1)|ac)",[trim]))),
<<"::">> = iolist_to_binary(join(re:split("ac","(?:(a(*SKIP)b)){0}(?:(?1)|ac)",[{parts,
2}]))),
<<"::">> = iolist_to_binary(join(re:split("ac","(?:(a(*SKIP)b)){0}(?:(?1)|ac)",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","(?<=(*SKIP)ac)a",[trim]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","(?<=(*SKIP)ac)a",[{parts,
2}]))),
<<"aa">> = iolist_to_binary(join(re:split("aa","(?<=(*SKIP)ac)a",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*PRUNE)b|a+c",[trim]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*PRUNE)b|a+c",[{parts,
2}]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*PRUNE)b|a+c",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP)(*PRUNE)b|a+c",[trim]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP)(*PRUNE)b|a+c",[{parts,
2}]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP)(*PRUNE)b|a+c",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP:N)(*PRUNE)b|a+c",[trim]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP:N)(*PRUNE)b|a+c",[{parts,
2}]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP:N)(*PRUNE)b|a+c",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aaaaaac","aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c",[trim]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c",[{parts,
2}]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*THEN)(*PRUNE)b|a+c",[trim]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*THEN)(*PRUNE)b|a+c",[{parts,
2}]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*THEN)(*PRUNE)b|a+c",[]))),
ok.
run51() ->
<<"aaaaa">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP)b|a+c",[trim]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP)b|a+c",[{parts,
2}]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP)b|a+c",[]))),
<<"aaaaa">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*PRUNE)(*SKIP)b|a+c",[trim]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*PRUNE)(*SKIP)b|a+c",[{parts,
2}]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*PRUNE)(*SKIP)b|a+c",[]))),
<<"aaaaa">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*THEN)(*SKIP)b|a+c",[trim]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*THEN)(*SKIP)b|a+c",[{parts,
2}]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*THEN)(*SKIP)b|a+c",[]))),
<<"aaaaa">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*COMMIT)(*SKIP)b|a+c",[trim]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*COMMIT)(*SKIP)b|a+c",[{parts,
2}]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*COMMIT)(*SKIP)b|a+c",[]))),
<<"aaaaaac">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*COMMIT)b|a+c",[trim]))),
<<"aaaaaac">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*COMMIT)b|a+c",[{parts,
2}]))),
<<"aaaaaac">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*COMMIT)b|a+c",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*THEN)b|a+c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*THEN)b|a+c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*THEN)b|a+c",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP)(*THEN)b|a+c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP)(*THEN)b|a+c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*SKIP)(*THEN)b|a+c",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*PRUNE)(*THEN)b|a+c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*PRUNE)(*THEN)b|a+c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*PRUNE)(*THEN)b|a+c",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*COMMIT)(*THEN)b|a+c",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*COMMIT)(*THEN)b|a+c",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaaaac","aaaaa(*COMMIT)(*THEN)b|a+c",[]))),
ok.
run52() ->
<<"aaaaa">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+",[trim]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+",[{parts,
2}]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+",[]))),
<<"aaaaa">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+",[trim]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+",[{parts,
2}]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+",[trim]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+",[{parts,
2}]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+",[]))),
<<"aaaaa">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+",[trim]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+",[{parts,
2}]))),
<<"aaaaa:">> = iolist_to_binary(join(re:split("aaaaaa","aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aaaac","a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c",[trim]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaac","a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c",[{parts,
2}]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaac","a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaaac","a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c",[trim]))),
<<"aaa:">> = iolist_to_binary(join(re:split("aaaac","a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c",[{parts,
2}]))),
<<"aaa:">> = iolist_to_binary(join(re:split("aaaac","a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c",[]))),
<<"aa">> = iolist_to_binary(join(re:split("aaaac","aaa(*PRUNE:A)a(*SKIP:A)b|a+c",[trim]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaac","aaa(*PRUNE:A)a(*SKIP:A)b|a+c",[{parts,
2}]))),
<<"aa:">> = iolist_to_binary(join(re:split("aaaac","aaa(*PRUNE:A)a(*SKIP:A)b|a+c",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaaac","aaa(*MARK:A)a(*SKIP:A)b|a+c",[trim]))),
<<"aaa:">> = iolist_to_binary(join(re:split("aaaac","aaa(*MARK:A)a(*SKIP:A)b|a+c",[{parts,
2}]))),
<<"aaa:">> = iolist_to_binary(join(re:split("aaaac","aaa(*MARK:A)a(*SKIP:A)b|a+c",[]))),
<<":a">> = iolist_to_binary(join(re:split("ba",".?(a|b(*THEN)c)",[trim]))),
<<":a:">> = iolist_to_binary(join(re:split("ba",".?(a|b(*THEN)c)",[{parts,
2}]))),
<<":a:">> = iolist_to_binary(join(re:split("ba",".?(a|b(*THEN)c)",[]))),
<<":ab">> = iolist_to_binary(join(re:split("abc","(a(*COMMIT)b)c|abd",[trim]))),
<<":ab:">> = iolist_to_binary(join(re:split("abc","(a(*COMMIT)b)c|abd",[{parts,
2}]))),
<<":ab:">> = iolist_to_binary(join(re:split("abc","(a(*COMMIT)b)c|abd",[]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","(a(*COMMIT)b)c|abd",[trim]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","(a(*COMMIT)b)c|abd",[{parts,
2}]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","(a(*COMMIT)b)c|abd",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","(?=a(*COMMIT)b)abc|abd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?=a(*COMMIT)b)abc|abd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?=a(*COMMIT)b)abc|abd",[]))),
<<"">> = iolist_to_binary(join(re:split("abd","(?=a(*COMMIT)b)abc|abd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abd","(?=a(*COMMIT)b)abc|abd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abd","(?=a(*COMMIT)b)abc|abd",[]))),
<<"">> = iolist_to_binary(join(re:split("abc","(?>a(*COMMIT)b)c|abd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?>a(*COMMIT)b)c|abd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abc","(?>a(*COMMIT)b)c|abd",[]))),
<<"">> = iolist_to_binary(join(re:split("abd","(?>a(*COMMIT)b)c|abd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abd","(?>a(*COMMIT)b)c|abd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abd","(?>a(*COMMIT)b)c|abd",[]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","a(?=b(*COMMIT)c)[^d]|abd",[trim]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","a(?=b(*COMMIT)c)[^d]|abd",[{parts,
2}]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","a(?=b(*COMMIT)c)[^d]|abd",[]))),
<<":c">> = iolist_to_binary(join(re:split("abc","a(?=b(*COMMIT)c)[^d]|abd",[trim]))),
<<":c">> = iolist_to_binary(join(re:split("abc","a(?=b(*COMMIT)c)[^d]|abd",[{parts,
2}]))),
<<":c">> = iolist_to_binary(join(re:split("abc","a(?=b(*COMMIT)c)[^d]|abd",[]))),
<<"">> = iolist_to_binary(join(re:split("abd","a(?=bc).|abd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abd","a(?=bc).|abd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abd","a(?=bc).|abd",[]))),
<<":c">> = iolist_to_binary(join(re:split("abc","a(?=bc).|abd",[trim]))),
<<":c">> = iolist_to_binary(join(re:split("abc","a(?=bc).|abd",[{parts,
2}]))),
<<":c">> = iolist_to_binary(join(re:split("abc","a(?=bc).|abd",[]))),
<<"abceabd">> = iolist_to_binary(join(re:split("abceabd","a(?>b(*COMMIT)c)d|abd",[trim]))),
<<"abceabd">> = iolist_to_binary(join(re:split("abceabd","a(?>b(*COMMIT)c)d|abd",[{parts,
2}]))),
<<"abceabd">> = iolist_to_binary(join(re:split("abceabd","a(?>b(*COMMIT)c)d|abd",[]))),
<<"abce">> = iolist_to_binary(join(re:split("abceabd","a(?>bc)d|abd",[trim]))),
<<"abce:">> = iolist_to_binary(join(re:split("abceabd","a(?>bc)d|abd",[{parts,
2}]))),
<<"abce:">> = iolist_to_binary(join(re:split("abceabd","a(?>bc)d|abd",[]))),
<<"">> = iolist_to_binary(join(re:split("abd","(?>a(*COMMIT)b)c|abd",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abd","(?>a(*COMMIT)b)c|abd",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abd","(?>a(*COMMIT)b)c|abd",[]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","(?>a(*COMMIT)c)d|abd",[trim]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","(?>a(*COMMIT)c)d|abd",[{parts,
2}]))),
<<"abd">> = iolist_to_binary(join(re:split("abd","(?>a(*COMMIT)c)d|abd",[]))),
<<"::c">> = iolist_to_binary(join(re:split("ac","((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))",[trim]))),
<<"::c:">> = iolist_to_binary(join(re:split("ac","((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))",[{parts,
2}]))),
<<"::c:">> = iolist_to_binary(join(re:split("ac","((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))",[]))),
ok.
run53() ->
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a)?(?(1)a|b)+$",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a)?(?(1)a|b)+$",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^(a)?(?(1)a|b)+$",[]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(a)?(?(1)a|b)+$",[trim]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(a)?(?(1)a|b)+$",[{parts,
2}]))),
<<"a">> = iolist_to_binary(join(re:split("a","^(a)?(?(1)a|b)+$",[]))),
<<"a">> = iolist_to_binary(join(re:split("ab","(?=a\\Kb)ab",[trim]))),
<<"a:">> = iolist_to_binary(join(re:split("ab","(?=a\\Kb)ab",[{parts,
2}]))),
<<"a:">> = iolist_to_binary(join(re:split("ab","(?=a\\Kb)ab",[]))),
<<"">> = iolist_to_binary(join(re:split("ac","(?!a\\Kb)ac",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ac","(?!a\\Kb)ac",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ac","(?!a\\Kb)ac",[]))),
<<"ab">> = iolist_to_binary(join(re:split("abcd","^abc(?<=b\\Kc)d",[trim]))),
<<"ab:">> = iolist_to_binary(join(re:split("abcd","^abc(?<=b\\Kc)d",[{parts,
2}]))),
<<"ab:">> = iolist_to_binary(join(re:split("abcd","^abc(?<=b\\Kc)d",[]))),
<<"">> = iolist_to_binary(join(re:split("abcd","^abc(?<!b\\Kq)d",[trim]))),
<<":">> = iolist_to_binary(join(re:split("abcd","^abc(?<!b\\Kq)d",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("abcd","^abc(?<!b\\Kq)d",[]))),
<<":abcd">> = iolist_to_binary(join(re:split("abcd","^((abc|abcx)(*THEN)y|abcd)",[trim]))),
<<":abcd::">> = iolist_to_binary(join(re:split("abcd","^((abc|abcx)(*THEN)y|abcd)",[{parts,
2}]))),
<<":abcd::">> = iolist_to_binary(join(re:split("abcd","^((abc|abcx)(*THEN)y|abcd)",[]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^((abc|abcx)(*THEN)y|abcd)",[trim]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^((abc|abcx)(*THEN)y|abcd)",[{parts,
2}]))),
<<"*** Failers">> = iolist_to_binary(join(re:split("*** Failers","^((abc|abcx)(*THEN)y|abcd)",[]))),
<<"abcxy">> = iolist_to_binary(join(re:split("abcxy","^((abc|abcx)(*THEN)y|abcd)",[trim]))),
<<"abcxy">> = iolist_to_binary(join(re:split("abcxy","^((abc|abcx)(*THEN)y|abcd)",[{parts,
2}]))),
<<"abcxy">> = iolist_to_binary(join(re:split("abcxy","^((abc|abcx)(*THEN)y|abcd)",[]))),
<<"yes">> = iolist_to_binary(join(re:split("yes","^((yes|no)(*THEN)(*F))?",[trim]))),
<<"yes">> = iolist_to_binary(join(re:split("yes","^((yes|no)(*THEN)(*F))?",[{parts,
2}]))),
<<"yes">> = iolist_to_binary(join(re:split("yes","^((yes|no)(*THEN)(*F))?",[]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","(?=a(*COMMIT)b|ac)ac|ac",[trim]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","(?=a(*COMMIT)b|ac)ac|ac",[{parts,
2}]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","(?=a(*COMMIT)b|ac)ac|ac",[]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","(?=a(*COMMIT)b|(ac)) ac | (a)c",[extended,
trim]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","(?=a(*COMMIT)b|(ac)) ac | (a)c",[extended,
{parts,
2}]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","(?=a(*COMMIT)b|(ac)) ac | (a)c",[extended]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*THEN)a)bn|bnn)",[trim]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*THEN)a)bn|bnn)",[{parts,
2}]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*THEN)a)bn|bnn)",[]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?!b(*SKIP)a)bn|bnn",[trim]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?!b(*SKIP)a)bn|bnn",[{parts,
2}]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?!b(*SKIP)a)bn|bnn",[]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*SKIP)a)bn|bnn)",[trim]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*SKIP)a)bn|bnn)",[{parts,
2}]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*SKIP)a)bn|bnn)",[]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?!b(*PRUNE)a)bn|bnn",[trim]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?!b(*PRUNE)a)bn|bnn",[{parts,
2}]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?!b(*PRUNE)a)bn|bnn",[]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*PRUNE)a)bn|bnn)",[trim]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*PRUNE)a)bn|bnn)",[{parts,
2}]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*PRUNE)a)bn|bnn)",[]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?!b(*COMMIT)a)bn|bnn",[trim]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?!b(*COMMIT)a)bn|bnn",[{parts,
2}]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?!b(*COMMIT)a)bn|bnn",[]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*COMMIT)a)bn|bnn)",[trim]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*COMMIT)a)bn|bnn)",[{parts,
2}]))),
<<":n">> = iolist_to_binary(join(re:split("bnn","(?(?!b(*COMMIT)a)bn|bnn)",[]))),
<<"bnn">> = iolist_to_binary(join(re:split("bnn","(?=b(*SKIP)a)bn|bnn",[trim]))),
<<"bnn">> = iolist_to_binary(join(re:split("bnn","(?=b(*SKIP)a)bn|bnn",[{parts,
2}]))),
<<"bnn">> = iolist_to_binary(join(re:split("bnn","(?=b(*SKIP)a)bn|bnn",[]))),
<<"">> = iolist_to_binary(join(re:split("bnn","(?=b(*THEN)a)bn|bnn",[trim]))),
<<":">> = iolist_to_binary(join(re:split("bnn","(?=b(*THEN)a)bn|bnn",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("bnn","(?=b(*THEN)a)bn|bnn",[]))),
<<":d">> = iolist_to_binary(join(re:split("acd","(?!a(*SKIP)b)..",[trim]))),
<<":d">> = iolist_to_binary(join(re:split("acd","(?!a(*SKIP)b)..",[{parts,
2}]))),
<<":d">> = iolist_to_binary(join(re:split("acd","(?!a(*SKIP)b)..",[]))),
ok.
run54() ->
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?(?!a(*SKIP)b))",[trim]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?(?!a(*SKIP)b))",[{parts,
2}]))),
<<"ac">> = iolist_to_binary(join(re:split("ac","^(?(?!a(*SKIP)b))",[]))),
<<":d">> = iolist_to_binary(join(re:split("acd","^(?!a(*PRUNE)b)..",[trim]))),
<<":d">> = iolist_to_binary(join(re:split("acd","^(?!a(*PRUNE)b)..",[{parts,
2}]))),
<<":d">> = iolist_to_binary(join(re:split("acd","^(?!a(*PRUNE)b)..",[]))),
<<":d">> = iolist_to_binary(join(re:split("acd","(?!a(*PRUNE)b)..",[trim]))),
<<":d">> = iolist_to_binary(join(re:split("acd","(?!a(*PRUNE)b)..",[{parts,
2}]))),
<<":d">> = iolist_to_binary(join(re:split("acd","(?!a(*PRUNE)b)..",[]))),
<<"">> = iolist_to_binary(join(re:split("ba","\\A.*?(?:a|bc)",[trim]))),
<<":">> = iolist_to_binary(join(re:split("ba","\\A.*?(?:a|bc)",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("ba","\\A.*?(?:a|bc)",[]))),
<<":CD">> = iolist_to_binary(join(re:split("CD","^(A(*THEN)B|C(*THEN)D)",[trim]))),
<<":CD:">> = iolist_to_binary(join(re:split("CD","^(A(*THEN)B|C(*THEN)D)",[{parts,
2}]))),
<<":CD:">> = iolist_to_binary(join(re:split("CD","^(A(*THEN)B|C(*THEN)D)",[]))),
<<"">> = iolist_to_binary(join(re:split("1234","^\\d*\\w{4}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("1234","^\\d*\\w{4}",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("1234","^\\d*\\w{4}",[]))),
<<"123">> = iolist_to_binary(join(re:split("123","^\\d*\\w{4}",[trim]))),
<<"123">> = iolist_to_binary(join(re:split("123","^\\d*\\w{4}",[{parts,
2}]))),
<<"123">> = iolist_to_binary(join(re:split("123","^\\d*\\w{4}",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","^[^b]*\\w{4}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^[^b]*\\w{4}",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^[^b]*\\w{4}",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^[^b]*\\w{4}",[trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^[^b]*\\w{4}",[{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^[^b]*\\w{4}",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","^[^b]*\\w{4}",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^[^b]*\\w{4}",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^[^b]*\\w{4}",[caseless]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^[^b]*\\w{4}",[caseless,
trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^[^b]*\\w{4}",[caseless,
{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^[^b]*\\w{4}",[caseless]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","^a*\\w{4}",[trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^a*\\w{4}",[{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^a*\\w{4}",[]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^a*\\w{4}",[trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^a*\\w{4}",[{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^a*\\w{4}",[]))),
<<"">> = iolist_to_binary(join(re:split("aaaa","^a*\\w{4}",[caseless,
trim]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^a*\\w{4}",[caseless,
{parts,
2}]))),
<<":">> = iolist_to_binary(join(re:split("aaaa","^a*\\w{4}",[caseless]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^a*\\w{4}",[caseless,
trim]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^a*\\w{4}",[caseless,
{parts,
2}]))),
<<"aaa">> = iolist_to_binary(join(re:split("aaa","^a*\\w{4}",[caseless]))),
ok.