정규표현식 혹은 정규식은 특정 문자열의 규칙을 가지는 문자열의 집합을 표현하는 데 사용되는 언어를 의미한다.
정규식 문법 모음
기호 | 설명 | 예제 |
. | 임의의 문자 1개를 의미 | |
^ | 시작을 의미한다 []괄호 안에 있다면 일치하지 않는 부정의 의미로 쓰인다. | ^a : a로 시작하는 단어, [^a] : a가 아닌 철자인 문자 1개 |
$ | $앞의 문자열로 문자가 끝나는지를 의미한다. | a$ : a로 끝나는 단어 |
[] | [] 괄호 안의 문자가 있는지를 확인한다. | [ab][cd] : a,b중 한 문자와 c,d중 한 문자 -> ac ad bc bd |
[^] | [] 대괄호 안에 ^ 문자가 있으면, 제외를 뜻함, 대괄호 안에 ^ 가 쓰이면 제외의 뜻, 대괄호 밖에 ^ 가 쓰이면 시작점의 뜻 | [^a-z] : 알파벳 소문자 a부터 z까지를 제외한 모든 문자 |
- | 사이의 문자 혹은 숫자를 의미한다. | [a-z] : 알파벳 소문자 a부터 z까지 하나, [a-z0-9] : 알파벳 소문자 전체,0~9 중 한 문자 |
| | 또는 | [a|b] : a 혹은 b |
() | 그룹 | 01(0|1) : 01뒤에 0 또는 1이 들어간다→ 010(o), 011(o), 012(x) |
{} | 개수 | a{3}b : a가 3번 온 후 b가 온다→ aab(x), aaab(o), aaaab(o) |
\b | 공백, 탭, ",", "/" 등을 의미한다 | apple\b : apple뒤에 공백 탭등이 있다 → apple juice(o), apple.com(x) |
\B | \b의 부정(공백, 탭 등이 아닌 문자) | apple\B→ apple.com(o) |
\d | 0~9 사이의 숫자, [0-9]와 동일 | |
\D | \d의 부정(숫자가 아닌 문자), [^0-9]와 동일 | |
\s | 공백, 탭 | |
\S | 공백, 탭이 아닌 문자 | |
\w | 알파벳 대소문자+숫자+"_", [a-zA-Z_0-9]와 동일 | |
\W | \w의 부정(알파벳 대소문자+숫자+"_" 제외한 문자), [^a-zA-Z_0-9] |
정규 수량 기호
기호 | 설명 | 예제 |
? | 앞의 표현식이 없거나 최대 1개 | a1? : 1이 최대 한개만 있거나 없을수도 있다 → a(o), a1(o), a11(x), a111(x) |
* | 앞의 표현식이 없거나 있거나(여러 개) | a1* : 1이 있을수도 없을수도 있다 → a(o), a1(o), a11(o), a111(o) |
+ | 앞의 표현식이 1개 이상(여러개 가능) | a1+ : 1이 1개 이상 있다 → a(x), a1(o), a11(o), a111(o) |
{n} | 앞의 표현식이 딱 n개 반복 | a{3} : a가 딱 3개 있다 → aa(x), aaa(o), aaaa(x), aaaaaaa(x) |
{n,m} | 앞의 표현식이 최소 n개 , 최대 m개 반복 | a{3,5} : a가 3개 이상 5개 이하 있다 → aa(x), aaa(o), aaaa(o), aaaaaaa(x) |
{n,} | 앞의 표현식이 n개 이상 | a{3,} : a가 3개 이상 있다 → aa(x), aaa(o), aaaa(o), aaaaaaa(o) |
정규식 그룹 캡쳐 기호
기호 | 설명 |
() | 그룹 및 캡쳐 |
(?:) | 찾지만 그룹에 포함 안됨 |
(?=) | =앞 문자를 기준으로 전방 탐색 |
(?<=) | =뒤 문자를 기준으로 후방 탐색 |
자주 사용되는 정규식 샘플
정규 표현식 | 설명 |
^[0-9]*$ | 숫자 |
^[a-zA-Z]*$ | 영문자 |
^[가-힣]*$ | 한글 |
\w+@\w+\.\w+(\.\w+)? | |
^\d{2,3}-\d{3,4}-\d{4}$ | 전화번호 |
`^01(?:0 | 1 |
\d{6} - [1-4]\d{6} | 주민등록번호 |
^\d{3}-\d{2}$ | 우편번호 |
String 클래스의 정규식 문법
String 문자열에 정규표현식을 적용해서 필터링을 할 수 있다.
String 클래스에 사용 가능한 정규식 메소드:
String 정규식 메서드 | 설명 |
boolean matches(String regex) | 인자로 주어진 정규식에 매칭되는 값이 있는지 확인 |
String replaceAll(String regex, String replacement) | 문자열내에 있는 정규식 regex와 매치되는 모든 문자열을 replacement 문자열로 바꾼 문자열을 반환 |
String[] split(String regex) | 인자로 주어진 정규식과 매치되는 문자열을 구분자로 분할 |
예시:
문자열의 길이가 4혹은 6이고 숫자로만 이루어져 있으면 true 이중 하나라도 만족하지 않으면 false를 리턴하는 메소드를 구현해야 한다.(출처:https://school.programmers.co.kr/learn/courses/30/lessons/12918)
class Solution {
public boolean solution(String s) {
boolean answer = ((s.length() == 4 || s.length() == 6) && s.matches("^[0-9]*$")); //
return answer;
}
}
'내일배움캠프' 카테고리의 다른 글
MySQL에서의 if문과 case문 (0) | 2024.05.30 |
---|---|
행렬 간 덧셈 (0) | 2024.05.28 |
Spring 숙련주차 Part3 (0) | 2024.05.24 |
Spring 숙련주차 Part2 (0) | 2024.05.24 |
Spring 숙련주차 Part1 (0) | 2024.05.22 |