Erik Ásland Erik Ásland - 3 months ago 21
Python Question

Using Python's regex .match() method to get the string before and after an underscore

I have the following 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)


My regex should only return the string if it contains 8 digits after an underscore. Once it returns the string, I want to use
.match()
to get two groups using the
.group()
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.

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

Answer
tableregex = re.compile("(.*)_(\d{8})")