How can I extract the information I want using this RegEx or better?
<p>So here's the Regular Expression I have so far.</p>

<p><code>r"(?s)(?&lt;=([A-G][1-3])).*?(?=[A-G][1-3]|$)"</code></p>

<p>It looks behind for a letter followed by a number between A-G and 1-3 as well as doing the same when looking ahead. I've tested it using <a href="https://regex101.com/" rel="nofollow">Regex101</a>.
<a href="https://I.stack.imgur.com/UPdgd.png" rel="nofollow">Here's what it returns for each match</a></p>

<p>This is the string I'm testing it against,</p>

<pre><code>"A1 **ACBFEKJRQ0Z+-** F2 **.,12STLMGHD** F1 **9)(** D2 **!?56WXP** C1 **IONVU43\"\'** E1 **Y87&gt;&lt;** A3 **-=.,\'\"!?&gt;&lt;()@**"
</code></pre>

<p>(the string shouldn't have any spaces but I needed to embolden the values between each Letter followed by a number so it is easier to see what I want)</p>

<p>What I want it to do is store the values between each of the matches for the group (The "Full Matches") and the matches for the group they coincide with to use later.</p>

<p>In the end I would like to end up with either a list of tuples or a dictionary for example:</p>

<pre><code>dict = {"A1":"ACBFEKJRQ0Z+-", "F2":",12STLMGHD", "F1":"9)(", "next group match":"characters that follow"}
</code></pre>

<p>or</p>

<pre><code>list_of_tuples = (["A1","ACBFEKJRQ0Z+-"], ["F2","12STLMGHD"], ["F1","9)("], ["next group match","characters that follow"])
</code></pre>

<p>The string being compared to the RegEx won't ever have something like "C1F2" btw</p>

<p>P.S. Excuse the terrible explanation, any help is greatly appreciated</p>

<p>I suggest</p>

<pre><code>(?s)([A-G][1-3])((?:(?![A-G][1-3]).)*)
</code></pre>

<p>See the <a href="https://regex101.com/r/xlC4tZ/2" rel="nofollow">regex demo</a></p>

<p>The <code>(?s)</code> will enable <code>.</code> to match linebreaks, <code>([A-G][1-3])</code>  will capture the uppercase letter+digit into Group 1 and <code>((?:(?![A-G][1-3]).)*)</code> will match all text that is not starting the uppercase letter+digit sequence.</p>

<p>The same regex can be unrolled as <code>([A-G][1-3])([^A-G]*(?:[A-G](?![1-3])[^A-G]*)*)</code> for better performance (no <code>re.DOTALL</code> modifier or <code>(?s)</code> is necessary with it). See <a href="https://regex101.com/r/PeUAym/1" rel="nofollow">this demo</a>.</p>

<p><a href="http://ideone.com/kvL59F" rel="nofollow">Python demo</a>:</p>

<pre><code>import re
regex = r"(?s)([A-G][1-3])((?:(?![A-G][1-3]).)*)"
test_str = """A1 ACBFEKJRQ0Z+-F2.,12STLMGHDF19)(D2!?56WXPC1IONVU43"'E1Y87&gt;&lt;A3-=.,'"!?&gt;&lt;()@"""
dct = dict(re.findall(regex, test_str))
print(dct)
</code></pre>

python regex