我想从找到我的regex表达式的地方到文本结尾处剪切文本。位置可能会有所不同,因此我需要将该数字作为变量。
该位置已经可以在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


我可以直接从变量开始(在这种情况下为2494)获取开始位置作为变量的位置吗?

最佳答案

通过调用match返回的.search()对象具有.start().end()方法,这些方法返回比赛的开始和结束位置。

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())


{8}匹配\d的8个重复,并且.*匹配所有剩余的字符,直到指定字符串(包括换行符)为止,只要指定了re.DOTALL标志即可。完全匹配为组0,这是匹配对象的.group()方法的默认值。您可以使用m.group(1)访问学生编号。

关于python - 如何从span =(2494,2516)获得第一个数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53455044/

10-12 16:57