Anda dapat menggunakan grup yang cocok:
p = re.compile('name (.*) is valid')
misalnya
>>> 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']
Di sini saya menggunakan re.findall
daripada re.search
mendapatkan semua contoh my_user_name
. Menggunakan re.search
, Anda perlu mendapatkan data dari grup pada objek yang cocok:
>>> 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'
Seperti yang disebutkan di komentar, Anda mungkin ingin membuat ekspresi reguler Anda tidak serakah:
p = re.compile('name (.*?) is valid')
untuk hanya mengambil hal-hal antara 'name '
dan berikutnya ' is valid'
(daripada membiarkan ekspresi reguler Anda mengambil yang lain ' is valid'
di grup Anda.
group(0)
untuk pertandingan pertama?