일치하는 그룹을 사용할 수 있습니다.
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'
주석에서 언급했듯이 정규식을 탐욕스럽지 않게 만들고 싶을 수 있습니다.
p = re.compile('name (.*?) is valid')
정규식이 그룹의 다른 항목을 선택하도록 허용하지 않고 'name '
다음 사이의 항목 만 선택합니다 .' is valid'
' is valid'
group(0)
첫 경기 가 아니라고 확신 하십니까?