정규표현식 특정문자열 제거하기

조회수 2486회

질문1 : (해결)

[퓨어포레] 앨리스 총총크림 50ml

[글로시블라썸] 네일스티커 비비드쉘 1매

[어퓨] 아이 무스 [3호_메이플토스트] 6g

맨앞의 브랜드명을 [ ] 째로 지우고싶습니다

brand = ['퓨어포레', '글로시블라썸', '어퓨']
target.replace("[", "").replace(brand, "").replace("]", "")

이렇게하면 어퓨 같은 경우는 뒤에 [ ] 도 같이 사라지는데 앞에있는 [브랜드명] 만 정규표현식을 사용해서 지울수 있는 방법이 있나요? 꼭 정규표현식이 아니어도 됩니다!

+

print(re.compile('\[[A-za-z가-힣 ]+\]').sub('',target))

1번은 이렇게 하니까 되네요

혹시 이 방법 외에도 더 좋은 방법이 있으면 알려주시면 감사합니다


질문2 :

A

[어퓨] 아이 무스 [4호_진저크림] 6g

[어퓨] 아이 무스 [5호_데일리모카] 6g

B

[어퓨] 아이 무스 

[어퓨] 아이 무스 

A에서 앞에 일치하는 단어만 남기고 뒷 부분 단어는 지워서 B처럼 만드는 방법이 있을까요?

1 답변

  • 질문 1

    브랜드명은 항상 줄 첫 번째에 위치해 있다는 점에 착안하여 만들어 봤습니다.

    '[브랜드명] 어쩌고저쩌고'
    

    줄 맨 앞에 있는 []만 제거하는 코드입니다.

    import re
    
    text = '''[퓨어포레] 앨리스 총총크림 50ml
    [글로시블라썸] 네일스티커 비비드쉘 1매
    [어퓨] 아이 무스 [3호_메이플토스트] 6g'''
    
    print(re.sub('^\[\w+\] ', '', text, flags=re.MULTILINE))
    
    # 출력 결과
    #앨리스 총총크림 50ml
    #네일스티커 비비드쉘 1매
    #아이 무스 [3호_메이플토스트] 6g
    

    질문 2

    문장의 앞에서부터 서로 일치하는 부분을 찾는 코드입니다.

    질문자님께서 제시하신 예시에서는 [어퓨] 아이 무스 [가 되겠네요.

    difflib 라이브러리를 사용했습니다. (기본 라이브러리)

    from difflib import SequenceMatcher
    
    string1 = "[어퓨] 아이 무스 [4호_진저크림] 6g"
    string2 = "[어퓨] 아이 무스 [5호_데일리모카] 6g"
    
    match = SequenceMatcher(None, string1, string2).find_longest_match(0, len(string1), 0, len(string2))
    
    print(string1[match.a: match.a + match.size])  # "[어퓨] 아이 무스 ["
    

    위 코드는 여기를 참고하여 만든 코드입니다. (사실상 그대로 가져왔습니다..)

    도움이 되셨길 바랍니다!

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)