Development record of developer who study hard everyday.

, , ,

안드로이드 정규표현식, Pattern, Matcher 클래스 알아보기

안드로이드 정규표현식, Pattern, Matcher 클래스 알아보기

안드로이드

안드로이드에서 아이디나 비밀번호 유효성 검사를 진행할 때, 정규표현식을 사용한다.

대게 아래와 같은 방식으로 진행이 된다.

Pattern과 Matcher 클래스
String 형식으로 된 정규표현식을 Pattern 클래스를 활용해 객체화한다.

Pattern 클래스는 Matcher 객체를 만들 수가 있고 정규표현식의 matching 결과가 Matcher 클래스에 담긴다.

그럼 Pattern 클래스와 Matcher 클래스에 대해 공부해보자.


Pattern 클래스

- 주요 메서드

compile(String regex) : 주어진 정규표현식을 pattern으로 만든다.

matcher(CharSequence input) : 만든 pattern과 match시킬 Matcher 객체를 만든다.

asPredicate() : 문자열과 match시킬 Predicate 객체를 만든다.

pattern() : 컴파일된 정규표현식을 반환한다.

split(CharSequence input) : 문자열을 주어진 인자값 CharSequence 패턴에 따라 분리한다.


Matcher 클래스

matches() : pattern이 대상 문자열과 일치하면 true

find() : pattern이 대상문자열과 일치하면 true, 그리고 그 위치로 이동

find(int start) : matcher를 reset하고 start부터 일치하는 pattern 찾기 시작

start() : 이전 match의 시작 인덱스 반환

start(int group) : 이전 match의 결과에서 주어진 group 안의 첫 인덱스 반환

end() : 매치된 가장 마지막 글자의 offset 반환

end(int group) : 이전 match의 결과에서 주어진 group 안의 마지막 글자의 offset 반환

group() : 매칭된 string 반환

group(int group) : 매칭 결과에서 주어진 group의 string 반환

groupCount() : 매칭된 결과의 group 개수 반환


정규표현식

<문자>

x : 특정 문자

\\ : 백슬래시 문자

\t : 탭

\n : 개행

\r : 캐리지 리턴

\f : form-feed 문자

\a : alert(bell) 문자

\e : escape 문자(esc)


<문자 집합>

[abc] : a,b or c

[^abc] : a,b, or c 제외한 모든 문자

[a-zA-Z] : 영문(대소문자 포함)

[a-d[m-p]] : a부터 d 또는 m부터 p

[a-z&&[def]] : d, e 또는 f

[a-z&&[^bc]] : a 부터 z 인데 b와 c는 제외

[a-z&&[^m-p]] : a 부터 z인데 m부터 p는 제외 


<이미 정의된 문자 집합>

. : 아무 문자

\d : 숫자 (= [0-9])

\D : 숫자 아닌 문자 (=[^0-9])

\s : 공백

\S : 공백 아닌 문자 (=[^\s])

\w : 알파벳이나 숫자 (=[a-zA-Z_0-9])

\W : 알파벳이나 숫자 제외한 문자 (=[^\w])

\b : 단어의 경계

\B : 단어가 아닌 것들의 경계


<수량 한정자>

X? : X가 한 번 또는 아예 안나옴

X* : X가 0번 이상

X+ : X가 한 번 이상

X{n} : X가 정확히 n번

X{n,} : X가 적어도 n번 이상

X{n,m} : X가 적어도 n번 이상 m번 이하


<논리 연산자>

XY  : X 뒤에 Y

X|Y : X 또는 Y

(X) : X 그룹


<그룹으로 만들기>

정규표현식에서는 ()로 그룹을 만든다.

그룹의 순서는 열린괄호( 순이다.

ex) ((A)(B(C))) 

Share:
Location: 대한민국

댓글 없음:

댓글 쓰기