정규식 중복되는 문자 하나만 구현하기
조회수 914회
import re
before_str = "이름은 김철수이고 전화번호는 010-0000:0000, 예약할 곳은 월하마을 입니다. 인원 수는 9명입니다. 날짜는 2019-11-11"
after_str = re.sub("[-|:|.|,|/|*|전화번호는|번호는|이름은|성함은|이고|예약할 |곳은|입니다.|장소는|인원 수는|숫자|명입니다.|명|날짜는|년|일|날짜는|]", " ", before_str)
print(after_str)
결과 값 : 김철 010 0000 0000 월하마을 9 2019 11 11
(결과 값이 이렇게 나오는데 여기서 after_str 에서 인원 수를 지워줬기 때문에 결과 값에서 '인원 수'가 지워진 건 알겠는데 여기서 '김철수'의 '수'도 같이 지워져서 '김철'이 나오더라구요 '김철수'는 그대로 나오게 하는 다른 코딩 방법이 있을까요? 아무리 구글링해도 안나와서 질문 드립니다 고수님들!!)
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
정규식은 조건을 정의하고 그 조건에 맞는 문자열을 반환하거나 치환하는 도구지요. 조건에 안 맞는 것들을 빼내는 게 아니구요.
import re regex = r"이름은 ([^이?고]+)이?고.*전화번호는 (\d{2,3}\S\d{3,4}\S\d{4}).*예약할 곳은 ([가-힣]+) 입니다\. 인원 수는 (\d+)명입니다\. 날짜는 (\d{4}-\d{2}-\d{2})" subst = "\\5 \\3 \\1 외 \\4 명 \\2" result = re.sub(regex, subst, before_str, 0, re.MULTILINE)
댓글 입력