คุณสามารถใช้กลุ่มที่ตรงกัน:
p = re.compile('name (.*) is valid')
เช่น
>>> import re
>>> p = re.compile('name (.*) is valid')
>>> s = """
... someline abc
... someother line
... name my_user_name is valid
... some more lines"""
>>> p.findall(s)
['my_user_name']
ที่นี่ฉันใช้re.findall
แทนที่จะre.search
ได้รับอินสแตนซ์ทั้งหมดของmy_user_name
ไฟล์. เมื่อใช้re.search
คุณจะต้องได้รับข้อมูลจากกลุ่มในวัตถุที่ตรงกัน:
>>> p.search(s) #gives a match object or None if no match is found
<_sre.SRE_Match object at 0xf5c60>
>>> p.search(s).group() #entire string that matched
'name my_user_name is valid'
>>> p.search(s).group(1) #first group that match in the string that matched
'my_user_name'
ดังที่ได้กล่าวไว้ในความคิดเห็นคุณอาจต้องการทำให้ regex ของคุณไม่โลภ:
p = re.compile('name (.*?) is valid')
เพื่อเลือกเฉพาะสิ่งที่อยู่ระหว่าง'name '
และถัดไป' is valid'
(แทนที่จะปล่อยให้ regex ของคุณเลือกคนอื่น ๆ' is valid'
ในกลุ่มของคุณ
group(0)
สำหรับนัดแรก?