문자 집합
패턴 | 의미 |
a-zA-Z | 알파벳 |
ㄱ-ㅎ가-힣 | 한글 |
0-9 | 숫자 |
. | 모든 문자열 (줄바꿈 제외) |
\d | 숫자 |
\D | 숫자 제외 |
\w | 밑줄 문자 포함 영,숫자 = [a-ZA-Z0-9_] |
\W | \w 제외 |
\s | space 공백 |
\S | space 공백 제외 |
\특수문자 | 특수문자 (메타문자 \ ^ $ . | [ ] ( ) * + ? { }) |
\b | 문자 경계 (사용 예제 참고) |
\B | \b 제외 |
\b 사용 예제
수량자
수량자 | 의미 |
a{n,m} | a가 n번이상 m번이하 반복 |
a{n,} | a가 n번 이상 |
a{n} | a가 n번 |
a? | a가 없거나 1개 = a{0,1} |
a+ | a가 1번 이상 반복 = a{1,} |
a* | a가 0번 이상 반복 = a{0, } |
a*? | a가 0개 = a{0} |
a+? | a가 1개 = a{1} |
그룹
기호 | 의미 |
() | 감싼 문자열 그룹화, 캡쳐링 |
(?: 패턴) | 그룹화, 캡쳐링 x |
(?=) | 앞쪽 일치 |
(?!) | !앞쪽 일치 |
(?<=) | 뒤쪽 일치 |
(?<!) | !뒤쪽 일치 |
(? <이름>) | <>안에 그룹 이름 지정 |
캡쳐링이란?
추가 예정
자바 정규식
String 클래스 정규식 메서드
boolean matches(String regex) | regex 패턴 매칭되는 값이 있는지 확인 |
String replaceAll(String regex, String replacement) | 문자열 내 regex와 매치되는 모든 문자열 replacement로 변환 |
String[] split(String regex) | regex 패턴과 매치되는 문자열을 구분자로 분할 |
Regex 패키지 클래스
java.util.regex
Pattern 클래스
compile(String regex) | 정규표현식 패턴 작성 |
matches(String regex, CharSequence input) | regex와 input가 일치하는지 확인 (전체 문자열이 일치해야 true 반환) |
asPredicate() | 문자열을 일치시키는 데 사용할 수 있는 술어 작성 ??? |
pattern() | 컴파일된 정규표현식 String 형태로 반환 |
split(CharSequence input) | input을 주어진 인자값 패턴에 따라 분리 |
Matcher 클래스
find() | 패턴이 일치하면 true 반환, 불일치하면 false. 반복실행 시 일치하는 부분 다음부터 이어서 실행 |
find(int start) | start index 위치 이후부터 매칭 검색 |
start() | 매칭되는 문자열의 시작위치 반환 |
start(int group) | 지정된 그룹이 매칭되는 시작위치 반환 |
end() | input을 주어진 인자값 패턴에 따라 분리 |
end(int group) | 지정된 그룹 매칭되는 끝위치의 다음 문자위치 반환 |
group() | 매칭된 부분 반환 |
group(int group) | 그룹화되어 매칭된 패턴 중 group번째 부분 반환 |
groupCount() | 괄호로 지정해서 그룹핑한 패턴의 전체 갯수 반환 |
matches() | 패턴이 전체 문자열과 일치할 경우 true 반환 |
자주 쓰이는 표현식
이메일
/^(?=[^_])+[₩w-.]+@[a-zA-Z0-9]+₩.[a-zA-Z0-9]+$/
주민등록번호
/^[\d]{2}(?:(?:0[13578]|1[02])(?:[0-2]\d|3[01])|(?:02(?:[01]\d|2[0-9]))|(?:0[469]|11)(?:[0-2]\d|30))[-/.][1-4]\d{6}$/
휴대폰 번호
/^01\d[-\s/]\d{3,4}[-\s/]\d{4}$/g
추가 예정
정규표현식 테스트 사이트