파이썬 정규표현식 질문 :)

22.01.31 10:46 작성 조회수 166

0

안녕하세요! 파이썬 정규표현식 관련해서 질문드려요. 고수님들 괜찮으시면 답변 부탁드립니다 ㅜ

 

1. 작성한 코드

from re import *

 

mar = compile('http\:\/\/item.gmarket.co.kr\/Item\?goodscode\=[0-9]+\&amp\;ver\=[0-9]+')

 

mar.search('http://item.gmarket.co.kr/Item?goodscode=1824005992&ver=637790507716456107')

 

위와 같이 작성하면 아래의 문자열 데이터가 모두 추출될줄 알았는데

http://item.gmarket.co.kr/Item?goodscode=1824005992&ver=637790507716456107

 

run 해보니 아래의 데이터가 추출되었습니다

http://item.gmarket.co.kr/Item?goodscode=18240059

 

왜 추출되다가 중간에 끊긴걸까요?

 

 

 

답변 1

답변을 작성해보세요.

0

남박사님의 프로필

남박사

2022.02.05

 

from re import *

lists = """
adslfjlajsdfljasdfjlasfj
http://item.gmarket.co.kr/Item?goodscode=1821122333&ver=131231231234490507
asdfkalsdfjlasjdfljfsa
http://item.gmarket.co.kr/Item?goodscode=1824005992&ver=612344123231551231
http://item.gmarket.co.kr/Item?goodscode=1824005992&ver=612333123144551231
http://item.gmarket.co.kr/Item?goodscode=1824005992&ver=612133123123123441
"""

mar = compile(r'http\:\/\/item.gmarket.co.kr\/Item\?goodscode\=[0-9]+\&amp\;ver\=[0-9]+')
r = mar.findall(lists)
print(r)

 

지나가다 답변 남깁니다. 이런 경우에는 위의 코드에서 처럼 findall() 함수를 사용하는게 좋습니다.

https://docs.python.org/3/library/re.html#re.search

공식 문서를 참고해보면 seach() 함수는 일치한 값의 존재 여부를 판단할때 주로 사용하고 질문하신것 처럼 패턴과 같은 어떤 내용을 반환 받기 위해서는 findall() 함수를 사용하는게 좋습니다.

허쿡님의 프로필

허쿡

질문자

2022.02.07

알려주셔서 감사합니다!!

새해 복 많이 받으세요 :)