如何从span=(24942516)中得到第一个数字?

2024-10-03 11:22:17 发布

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

我想从正则表达式所在的点到文本的末尾剪切一个文本。位置可能不同,所以我需要这个数字作为变量。 位置已经可以在studentnrRegex.search(text)的结果中看到:

>>> studentnrRegex = re.compile(r'(Studentnr = 18\d\d\d\d\d\d\d\d)')  
>>> start = studentnrRegex.search(text)  
>>> start  
<_sre.SRE_Match object; span=(2494, 2516), match='Studentnr = 1825010243'>
>>> myText = text[2494:]  
>>> myText 
'Studentnr = 1825010243\nTEXT = blablabla

我能直接从变量start得到变量的起始位置吗,在这里是2494


Tags: text文本researchobjectmatch数字start
1条回答
网友
1楼 · 发布于 2024-10-03 11:22:17

通过调用.search()返回的match对象具有^{}^{}方法,它们返回匹配的开始和结束位置

studentnrRegex = re.compile(r'(Studentnr = 18\d\d\d\d\d\d\d\d)')
m = studentnrRegex.search(text)
start = m.start()
print(mytext[start:])

你可以用一个不同的正则表达式来完成同样的事情,这个正则表达式匹配学生号及其后的所有内容。这将为您省去制作切片的麻烦:

studentnrRegex = re.compile(r'(Studentnr = 18\d{8}).*', re.DOTALL)
m = studentnrRegex.search(text)
print(m.group())

只要指定了re.DOTALL标志,{8}匹配8个重复的\d.*匹配所有剩余的字符,直到字符串的结尾(包括换行符)。完全匹配是group0,这是match对象的.group()方法的默认值。您可以通过m.group(1)访问学号

相关问题 更多 >