使用Python的regex.match()方法获取under

2024-10-06 07:47:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

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)

我的正则表达式应该只返回在下划线后包含8位数字的字符串。一旦它返回字符串,我想使用.match()使用.group()方法得到两个组。第一组应包含一个字符串,该字符串将包含数字之前的所有字符,第二组应包含一个8位的字符串。你知道吗

使用.match().group()得到我想要的结果的正确正则表达式是什么?你知道吗


Tags: 字符串代码inreformatchtablegroup
3条回答

我认为这个模式应该符合您的需要:(.*?_)(\d{8})。你知道吗

第一组包括8位以内的所有内容,包括下划线。第二组是8位数字。你知道吗

如果不希望包含下划线,请改用:(.*?)_(\d{8})

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

使用捕获组:

>>> import re
>>> pat = re.compile(r'(?P<name>.*)_(?P<number>\d{8})')
>>> pat.findall(s)
[('henry_jones', '12345678')]

如果需要,您可以获得命名组的良好功能:

>>> match = pat.match(s)
>>> match.groupdict()
{'name': 'henry_jones', 'number': '12345678'}

相关问题 更多 >