게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
정규식 "모든 매치 찾기" 가 제가 생각하는데로 작동하지 않네요
게시물ID : programmer_7709짧은주소 복사하기
작성자 : 할말이있어
추천 : 0
조회수 : 441회
댓글수 : 5개
등록시간 : 2015/01/20 00:49:17
옵션
  • 본인삭제금지
언어는 라켓을 쓰고있습니다. 하지만 문법만 다를 뿐이지 정규식 자체는 거의 대부분의 프로그래밍 언어에 있으니까 라켓을 모르셔도 상관없으실듯 합니다.

(regexp-match* #rx"a." "abacadaeafag")

regexp-match* 는 정규식에 맞는 표현을 "모두" 찾아라 입니다
따라서 위의식은 정규식 "a." 에 맞는 표현을 "abacadaeafag" 에서 모두 찾아라 입니다
a. 는 정규식에서 "a하고 다음 아무문자" 라는 뜻이기 때문에
ab ac ad ae af ag 가 찾아집니다. 여기까지는 제가 이해한 바에 부합합니다.

(regexp-match* #rx"a.*" "abacadaeafag")

하지만 위의 결과는 제가 생각한 바가 아니네요.
a.* 는 "a 하고 다음 아무문자들(0개이상)" 이라는 뜻이기 때문에 맞는 모든 표현은
abacadaeafag abacadaeafa abacadaeaf abacadaea ... aba ab a
acadaeafag acadaeafa acadaeaf ... aca ac a
...
afag afa af a
ag a

이 모든 것들이 나와야합니다만 결과는 abacadaeafag 하나뿐이네요

Kleene star 저것이 항상 greedy 하게 맞는 부분중 가장 큰 부분을 매칭하기 때문에 이런 현상이 발생하는것으로 이해했는데요

그럼 제가 원하는것처럼 "a.*" 를 "abacadaeafag" 에서 모두 끄집어 내려면 어떻게 하면 될까요?

즉 ".*" 를 "123" 에서 모두 찾으면
123 12 1 23 2 3 이 다 나오게 하고 싶습니다
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호