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.
What is the correct regex to get the results I am looking for using .match()
and .group()
?
Use capture groups:
>>> import re
>>> pat = re.compile(r'(?P<name>.*)_(?P<number>\d{8})')
>>> pat.findall(s)
[('henry_jones', '12345678')]
You get the nice feature of named groups, if you want it:
>>> match = pat.match(s)
>>> match.groupdict()
{'name': 'henry_jones', 'number': '12345678'}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With