Matcher, Pattern 정규식

Lee HyeongJong·2023년 6월 29일
0

안드로이드

목록 보기
42/43

1. Matcher

주요 메서드

matches() : 대상 문자열과 패턴이 일치할 경우 true 반환합니다.
find() : 대상 문자열과 패턴이 일치하는 경우 true를 반환하고, 그 위치로 이동합니다.
find(int start) : start위치 이후부터 매칭검색을 수행합니다.
start() : 매칭되는 문자열 시작위치 반환합니다.
start(int group) : 지정된 그룹이 매칭되는 시작위치 반환합니다.
end() : 매칭되는 문자열 끝 다음 문자위치 반환합니다.
end(int group) : 지정되 그룹이 매칭되는 끝 다음 문자위치 반환합니다.
group() : 매칭된 부분을 반환합니다.
group(int group) : 매칭된 부분중 group번 그룹핑 매칭부분 반환합니다.
groupCount() : 패턴내 그룹핑한(괄호지정) 전체 갯수를 반환합니다.

2. Pattern

자주 사용되는 정규표현식

^[0-9]$ 숫자
^[a-zA-Z]
$ 영문자
^[가-힣]*$ 한글
\w+@\w+\.\w+(\.\w+)? E-Mail
^\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}$ 우편번호

3. 코드작성

작성코드

String number = propVo.getPropValue();
String patternString = "^\\d{2,3}-\\d{3,4}-\\d{4}$";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(number);
while (!matcher.find()) {
	number = number.substring(0, number.length() -1);
	matcher = pattern.matcher(number);
    if (matcher.find()) break;
}

내선번호를 입력받아 정규식 패턴에 대입 후 matcher.find()로 맞는지 아닌지 판별한다
while문으로 matcher.find()가 false이면 입력받은 숫자를 지속적으로 수정 if문으로 true가 나오면 while에서 빠져나온다.

예시코드

String regex = "^[a-zA-Z]$"; // 영문자만 존재하는가?
String input = "Test String";

System.out.println(Pattern.matches(regex, input)); // false

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);

System.out.println(matcher.matches());// false

영문자만 존재하는지에 대한 코드이다
영문자만 있으면 true 아니면 false

matcher.find()와 matcher.matches() 차이
matcher.find() : 패턴이 일부만 일치해도 true
matcher.matches() : 해당 문자열 전체가 일치해야 true

참고

https://itstory1592.tistory.com/m/63
https://girawhale.tistory.com/77
http://itpsolver.com/matcher%EC%9D%98-find%EC%99%80-matches-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90/

profile
코딩을 시작해보자

0개의 댓글