파이썬 정규표현식 질문입니다.

조회수 422회

각 변수에 문자열이 할당되어있고 그 변수들을 합쳐서 정규표현식으로 컴파일하고 싶습니다. 아래와 같은 경우인데요.

import re

a = "[질문]"
b = "[답변]"
c = "(해결)"

message = "[질문](해결) 정규표현식 궁금합니다.[답변]"

regex = re.compile(f"{a}{b}{c}")

print(regex.sub("@", message))  #  <= 잘못된 결과
# 1번 결과: [질문](해결) 정규표현식 궁금합니다.[답변]

실행시키면 위와 같이 결과가 나오는데요. 전혀 변경이 안되었는데요. 사실 제가 원하는 결과는 아래와 같이 나왔으면 하거든요.

abc = re.compile(r'\[질문]|\[답변]|\(해결\)')
print(abc.sub("@", message))  # <= 제가 원한 결과
# 2번 결과: @@ 정규표현식 궁금합니다.@

변수들을 문자열로 하나로 할당해서 그 자체를 정규표현식으로 컴파일 할려면 어떻게 해야하나요?

1 답변

  • import re
    
    a = "\\[질문\\]"
    b = "\\[답변\\]"
    c = "\\(해결\\)"
    
    message = "[질문](해결) 정규표현식 궁금합니다.[답변]"
    
    regex = re.compile(f"{a}|{b}|{c}")
    
    print(regex.sub("@", message))  #  <= 잘못된 결과
    # 1번 결과: [질문](해결) 정규표현식 궁금합니다.[답변]
    
    abc = re.compile(r'\[질문]|\[답변]|\(해결\)')
    print(abc.sub("@", message))  # <= 제가 원한 결과
    # 2번 결과: @@ 정규표현식 궁금합니다.@
    
    # result
    @@ 정규표현식 궁금합니다.@
    @@ 정규표현식 궁금합니다.@
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)