작성
·
282
0
안녕하세요! 파이썬 정규표현식 관련해서 질문드려요. 고수님들 괜찮으시면 답변 부탁드립니다 ㅜ
1. 작성한 코드
from re import *
mar = compile('http\:\/\/item.gmarket.co.kr\/Item\?goodscode\=[0-9]+\&\;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
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]+\&\;ver\=[0-9]+')
r = mar.findall(lists)
print(r)
지나가다 답변 남깁니다. 이런 경우에는 위의 코드에서 처럼 findall() 함수를 사용하는게 좋습니다.
https://docs.python.org/3/library/re.html#re.search
공식 문서를 참고해보면 seach() 함수는 일치한 값의 존재 여부를 판단할때 주로 사용하고 질문하신것 처럼 패턴과 같은 어떤 내용을 반환 받기 위해서는 findall() 함수를 사용하는게 좋습니다.
알려주셔서 감사합니다!!
새해 복 많이 받으세요 :)