RegularExpression 정규표현식
: 문자열에서 특정 패턴을 찾거나 교체, 삭제 등 문자열을 원하는 형태로 편집하는 기능
- 문자의 형식을 검증하는 형태
- 사용 예시 : 전화번호, 비밀번호
- 정규표현식 문법
- [a-zA-Z] 대소문자 중 1개
- \d 숫자 = [0-9]와 동일
- \w 알파벳이나 숫자 1개=[a-zA-Z0-9]과동일
- . 모든 문자 중 임의의 한 문자
- ? 문자가 0번 =없음 or 1개
- 문자가 0번 이상 발생
- {3,} : 3자리 이상
- 예 ) (02|010) - \d{3,4} - \d{4} => 010-111-1111 02-111-1111
! 사용
- Pattern 클래스의 메소드
- compile(String regex); 주어진 정규표현식으로 패턴을 생성
- matcher(CharSequence input); 대상 문자열이 일치하는 경우 true
- Matcher 클래스의 메소드
- matches() 대상 문자열과 패턴이 일치하는 경우 true
- find() 대상 문자열과 패턴이 일치하는 경우 true + 그 위치로 이동
- start() 매칭하는 문자열의 시작 위치 반환
- 정규표현식 문법
- ^ 문자열의 시작
- $ 문자열의 끝
- 문자열이 0번 이상 발생
- 문자열이 1번 이상 발생
- [ ] 문자열의 집합 범위
- [0-9] 0-9 숫자
- [a-z] a-z 알파벳
- ^[ ] not의 의미
- 코드 예시 -
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpressionEx {
public static void main(String[] args) {
//배열 중 b로 시작하는 단어만 찾기
String[] strArr = {"bat", "baby", "car", "cb", "date",
"disk","count","apple","banana"};
Arrays.sort(strArr); // 배열 정렬
for(int i=0; i<strArr.length; i++) {
System.out.print(strArr[i]+" ");
}
System.out.println();
System.out.println("------------------------");
Pattern pattern = Pattern.compile("b[a-zA-Z]*");
for(String str : strArr) {
Matcher matcher = pattern.matcher(str);
if(matcher.matches()) { //패턴이 일치가되면 true를 반환
System.out.print(str+" ");
}
}
}
}
- 코드 설명 -
Pattern pattern = Pattern.compile("b[a-zA-Z]*");
//pattern에 [a-zA-Z]중 b의 패턴을 생성
for(String str : strArr) {
//향상된 for문= 임시변수 str에 strArr 배열 삽입
Matcher matcher = pattern.matcher(str);
//Matcher을 이용하여 pattern과 임시변수 str이 일치하는지 전체 확인 if(matcher.matches()) {
//만약 패턴과 문자열이 일치가되면 true를 반환 System.out.print(str+" ");
}
}
'JAVA > java' 카테고리의 다른 글
[JAVA] 데이터입출력 (스트림) (0) | 2023.09.12 |
---|---|
[JAVA] StringBuffer / StringBuilder 문자열 추가/변경 객체 (0) | 2023.09.12 |
[JAVA] 제네릭 : 결정되지 않은 파라미터를 처리 (0) | 2023.09.12 |
[JAVA] 예외 처리 exception (0) | 2023.09.12 |
[JAVA] 내부 class, 익명 class (0) | 2023.09.12 |