늦은 프로그래밍 이야기
정규표현식 본문
정규표현식 (Regular Expresstion)
- 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식.
- 주로 전화번호, 이메일, 주민번호가 정상적으로 입력 되었는지 검증할 경우에 사용.
- if문을 사용하면 가독성이 안좋아지고 코드의 길이가 길어지므로 정규표현식을 사용.
Pattern 클래스
- Pattern 클래스의 matches() 메소드를 사용하여 해당 문자열의 패턴과 일치하는지 확인.
- 문자열이 정규표현식에 매칭되면 true, 그렇지 않으면 false가 반환된다.
String pattern = "^[0-9]*$"; // 숫자만 등장하는지
String str = "123321";
boolean result = Pattern.matches(pattern, str);
System.out.println(result); // true
| 메소드 | 설명 |
| compile(String regex) | 정규표현식의 패턴을 작성합니다 |
| matches(String regex, CharSequence input) | 정규표현식의 패턴과 문자열이 일치하는지 체크합니다 일치할 경우 true, 일치하지 않는 경우 false를 리턴합니다 |
Matcher 클래스
- Pattern 클래스와 비슷하지만 더 많은 비교관련 메서드를 제공.
- Pattern 객체의 matcher() 메소드를 호출해서 사용한다.
Pattern pattern = Pattern.compile("^[0-9]*$");
String str = "04234234";
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.find());
| 메소드 | 설명 |
| matches() | 정규표현식의 패턴과 문자열이 일치하는지 체크 일치할 경우 true, 일치하지 않는 경우 false를 리턴 |
| find() | 정규표현식의 패턴과 문자열이 일치하는지 체크합니다 그리고 그 위치로 이동 일치할 경우 true, 일치하지 않는 경우 false를 리턴 |
| find(int start) | start위치부터 find() 작업을 수행 |
| group() | 매칭된 부분 중 첫 번째 그룹을 리턴 |
| group(int group) | 매칭된 부분중 group번째 그룹을 리턴 |
| groupCount() | 매칭된 group의 전체 갯수를 리턴 |
정규표현식 문법
| 표현식 | 설명 |
| ^ | 문자열 시작 |
| $ | 문자열 종료 |
| . | 임의의 한 문자(단 \은 넣을 수 없음) |
| * | 앞 문자가 없을 수도 무한정 많을 수도 있음 |
| + | 앞 문자가 하나 이상 |
| ? | 앞 문자가 없거나 하나 있음 |
| [ ] | 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다. |
| { } | 횟수 또는 범위를 나타냅니다. |
| ( ) | 소괄호 안의 문자를 하나의 문자로 인식 |
| | | 패턴 안에서 or 연산을 수행할 때 사용 |
| \ | 정규 표현식 역슬래시(\)는 확장문자 (역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미) |
| \b | 단어의 경계 |
| \B | 단어가 아닌것에 대한 경계 |
| \A | 입력의 시작 부분 |
| \G | 이전 매치의 끝 |
| \Z | 입력의 끝이지만 종결자가 있는 경우 |
| \z | 입력의 끝 |
| \s | 공백 문자 |
| \S | 공백 문자가 아닌 나머지 문자 |
| \w | 알파벳이나 숫자 |
| \W | 알파벳이나 숫자를 제외한 문자 |
| \d | 숫자 [0-9]와 동일 |
| \D | 숫자를 제외한 모든 문자 |
| (?i) | 앞 부분에 (?!)라는 옵션을 넣어주게 되면 대소문자는 구분하지 않습니다 |
자주쓰는 표현식
| 표현식 | 설명 |
| ^[0-9]*$ | 숫자 |
| ^[a-zA-Z]*$ | 영문자 |
| ^[가-힣]*$ | 한글 |
| \\w+@\\w+\\.\\w+(\\.\\w+)? | |
| ^\d{2,3}-\d{3,4}-\d{4}$ | 전화번호 |
| ^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ | 휴대전화번호 |
| \d{6} \- [1-4]\d{6} | 주민등록번호 |
| ^\d{3}-\d{2}$ | 우편번호 |
'내일배움캠프 > Java 기초' 카테고리의 다른 글
| '==' 연산자와 .equals 의 차이 (0) | 2022.11.24 |
|---|---|
| continue, break (0) | 2022.11.22 |
| 연산자의 우선순위와 결합방향 (0) | 2022.11.17 |
| 타입 변환 (0) | 2022.11.17 |
| 실수의 표현 방식 (0) | 2022.11.17 |
Comments