참고 링크
https://adnoctum.tistory.com/544
http://www.moneybook.co.kr/pages/542845
정규표현식은 기본적으로 마지막 조건에 대해서 여러개가 일치하면 전부 가져오게 된다.
?filename=1406100586522_img.JPG&expires=1573486297&credential=asdf
이런 값에서
/filename=(.+)\\&/g
이런 조건으로 가져오게 되면
filename=1406100586522_img.JPG&expires=1573486297&
여기까지 가져오게 된다.
.+
메타문자에서 모든 문자열을 체크해버리고, &
로 끝나는 마지막까지 전부 가져오게 되는 것이다.
즉, 조건이 만족되는 곳의 끝까지 가져와버린다.
이것을 최대 매치, 혹은 탐욕스러운(greedy) 매치라고 한다.
최소한의 일치만, 즉 아래처럼 가져오고자 하면filename=1406100586522_img.JPG&
최소 매치, 게으른(lazy) 또는 욕심없는(non-greedy) 매치를 사용해야 한다.
최소 매치를 사용하기 위해서는 ?를 사용하면 된다./filename=(.+?)\\&/g
이렇게 사용한다면 위 예시처럼 최소한의 일치하는 것만 가져오게 된다.
단, 단독으로 쓰는 메타문자 물음표와 혼동하면 안 된다.
최소 매치의 물음표는 다른 메타문자, 정확하게는 +
*
{n,}
라는 세 개의 메타문자 뒤에 각각 붙여서 사용한다. 이들 세 개의 메타문자는 수량자(quantifier)라고도 부르는데, 글자의 개수에 관한 메타문자이기 때문이다.
'개발 > 기타' 카테고리의 다른 글
AES-256 암호화 후의 길이는 얼마일까 (1) | 2021.07.12 |
---|---|
시놀로시 나스에 Git 서버 올리는 방법 (0) | 2019.06.21 |