Using Python's regex .match() method to get the string before and after an underscore
<p><strong><em>I have the following code...</em></strong></p>

<pre><code>tablesInDataset = ["henry_jones_12345678", "henry_jones", "henry_jones_123"]

for table in tablesInDataset:
    tableregex = re.compile("\d{8}")
    tablespec = re.match(tableregex, table)

    everythingbeforedigits = tablespec.group(0)
    digits = tablespec.group(1)
</code></pre>

<p>My regex should only return the string if it contains 8 digits after an underscore. Once it returns the string, I want to use <code>.match()</code> to get two groups using the <code>.group()</code> method. The first group should contain a string will all of the characters before the digits and the second should contain a string with the 8 digits. </p>

<p>Could someone please help me figure out the correct regex to use to get the results I am looking for using <code>.match()</code> and <code>.group()</code>?</p>

<p>I think this pattern should match what you need: <code>(.*?_)(\d{8})</code>.</p>

<p>First group includes everything up to the 8 digits, including the underscore. Second group is the 8 digits.</p>

<p>If you don't want the underscore included, use this instead: <code>(.*?)_(\d{8})</code></p>

python regex string iterator