Case 1: 앞의 문자가 나올지 안나올지 모르는 경우를 위해 사용한다.
- 중간에 나올지 안나올지 확실하지 않은 문자에 사용할 수 있다.
예제 http or https
- URL 을 파악할 때
http://
,https://
둘 다 매칭시킬 때 유용하다.https?
Case 2: non-greedy matching 혹은 lazy-quantifiers 를 위해 사용한다.
- 오직
*
혹은+
와?
기호가 함께 사용될 때만 적용되는 규칙이다. *
혹은+
와 같이 가능한 많은 문자를 소비해버리는 정규표현식 기호를 이용할 때, 이를 non-greedy 한 동작으로 변경할 수 있다.+
혹은*
기호를 그냥 사용하면 가능한 가장 긴 시퀀스를 만들어낸다.?
와 함께 사용하면 가능한 적은 시퀀스를 만들어낸다.
- 아래의 예제를 보는 것이 더 와닿을 것이다.
예제: json 에 포함된 문자열만 선택하기
- 아래 json 문자열에서 키나 값중에 문자열로 된 것만 선택하고 싶다면 어떻게 해야 할까?
- 따옴표(
"
) 사이에 있는 글자만 집어오고 싶다.
{ "id": 1, "title": "아무것도 안 하기" }
- 따옴표 두개를 이용해
/".+"/g
라는 정규표현식을 사용하면 모든 문자가 잡혀버린다.
/".+"/g
를 살짝 수정해서+
뒤에?
를 붙여주면 된다.
반응형
'정규표현식' 카테고리의 다른 글
전방 탐색과 후방 탐색 (Regex Lookaround match) 이란? (0) | 2023.04.04 |
---|---|
정규표현식 Lookaround (Lookahead, Lookbehind) 알아보기 (0) | 2022.12.28 |