IT기타

정규식- "?" "+" 의 의미

emilyyoo 2025. 3. 29. 14:56
728x90

✅ 정규식에서 ? 기본 의미: "0개 또는 1개" (있을 수도, 없을 수도)

📌 ?가 문자 또는 그룹 뒤에 붙으면, 그 앞의 것이 "선택사항"이 됨.

예시 1:

"colou?r" 같은 정규식은 아래와 같은 결과가 나온다.

 

 

color u 없음 → OK
colour u 있음 → OK
colouur u가 2개 → 안 됨

 

예시 2:

https?://

http:// s 없음 → OK
https:// s 있음 → OK
httpp:// p 두 개 → 안 됨

✅ ?를 그룹 뒤에 붙이면? → 그 그룹이 있을 수도, 없을 수도 있음

예시 3:

(\d+)?명

3명 (\d+) = 3
(\d+) 생략됨
33명 (\d+) = 33

🧠 헷갈리기 쉬운 다른 쓰임들

?는 단독으로만 쓰이지 않고 다른 문법과 조합돼서 더 다양한 의미를 가진다.


✅ ? + *, +, {} 와 함께: 비탐욕적(최소 매칭)

 
a.*b → 가장 긴 a...b
a.*?b → 가장 짧은 a...b

예시:  

"a123b456b" 와 같은 문자열을 대상으로 정규식으로 찾으면, 

정규식 결과
a.*b a123b456b (전부)
a.*?b a123b (처음 b까지만)

✅ ?:와 함께 쓰인 (?:...) → 비캡처 그룹

(그룹은 되지만 $1, $2 등으로 꺼낼 수 없음)

(?:abc)? → abc가 있어도 되고 없어도 됨, 결과로는 안 나옴

🧪 실전 예제 요약

정규식의미
s? s가 있을 수도, 없을 수도
\d?-?\d+ 앞에 - 있는 숫자 가능: 5, -7
(?:-\d+)? -숫자가 생략 가능
(\d+(?:-\d+)?).png 숫자 또는 숫자-숫자만 추출해서 .png 만드는 데 사용됨

✅ 정리

패턴의미
? 바로 앞의 하나가 있을 수도, 없을 수도
x? x가 0개 또는 1개
(?:...) 캡처 안 되는 그룹
(...)? 그룹 전체가 선택사항
*?, +? 가능한 짧게 매칭 (비탐욕적)

 

 

 

✅ +의 정확한 의미

+는 "바로 앞 항목이 1번 이상 반복됨"을 의미.

즉, "하나 이상 있어야 한다"는 뜻.


✅ 예제 비교: \d+ vs \d* vs \d?


정규식 의미 결과
\d+ 숫자 1개 이상 1, 9, 42, 2024 ✅
\d* 숫자 0개 이상 "", 1, 89 ✅
\d? 숫자 0개 또는 1개 "", 5 ✅, 25 ❌
728x90