'Dev AndroidApp for Mac' 카테고리의 다른 글

android App 개발의 범위  (0) 2015.02.03
Posted by 제로스틴
,

출처: http://sexy.pe.kr/tc/532

그림으로 너무 잘 설명해 주신 거 같아서 퍼왔는데, 블로그에 댓글 달기가 안되서 허락을 못 구했다. 혹시 주인장 분이 지우라고 하면 지우겠습니다. 

Matcher 클래스 메서드들

find() : 패턴이 일치하는 경우 true를 반환하고, 그 위치로 이동(여러개가 매칭되는 경우 반복 실행가능)
find(int start) : start위치 이후부터 매칭검색을 수행
start() : 매칭되는 문자열 시작위치 반환
start(int group) : 지정된 그룹이 매칭되는 시작위치 반환
end() : 매칭되는  문자열 끝 다음 문자위치 반환
end(int group) : 지정되 그룹이 매칭되는 끝 다음 문자위치 반환

group() : 매칭된 부분을 반환
group(int group) : 매칭된 부분중 group번 그룹핑 매칭부분 반환
groupCount() : 패턴내 그룹핑한(괄호지정) 전체 갯수 반환
matches() : 패턴이 전체 문자열과 일치할 경우 true 반환


그룹화 이해하기

패턴 내에서 그룹을 지정하기 위해서 ()를 통해 그룹을 설정해주면 되고, () 갯수만큼 그룹이 만들어 진다.



위 예제에서는 2개의 그룹이 설정이 되었으며, 각 그룹은 group()메서드를 통해 1,2번으로 접근이 가능하다.
group()나 group(0) 메서드는 매칭된 전체 문자열을 반환한다.



매칭 위치 반환

start()메서드를 통해 패턴이 일치하는 문자열의 시작 위치와 end() 메서드를 통해 패턴이 끝나는 문자열의 다음 문자위치를 반환한다.



end() 메서드가 패턴이 일치하는 문자열의 끝부분 위치가 아닌 끝부분 다음 문자의 위치라는 것을 확인하자.

start(int group)와 end(int group)에 group이 지정되는 경우 해당 그룹이 매칭되는 위치를 반환하게 된다.

이보다 더 많은 메서드들이 있지만 이정도만 알아도 기본적인 패턴 매칭하는데는 문제가 없어 보인다^^

Posted by 제로스틴
,


출처 C.E/Java2013/10/19 09:59

java.util.regex 패키지에 있는Match 클래스와 Pattern 클래스를 이용하여 문자열을 정규검증식으로 나타낼 수 있습니다.

 

boolean flag = Pattern.matches("^[a-zA-Z0-9]*$", strInput); 

 정규표현식의 내용은 다음을 의미합니다.

 

1) ^ : 문자열의 시작

2) $ : 문자열의 종료

3) . : 임의의 한 문자 (문자의 종류와 관계없음)

4) | : or의 의미임

5) ? : 앞 문자가 없거나 하나 있을때

6) + : 앞 문자가 하나 이상임 (최소 한개 이상)

7) * : 앞 문자가 없을 수도 있고, 무한정 많을 수도 있음

8) [] : 문자 클래스의 지정, 문자의 집합이나 범위를 나태내면 - 기호를 사용한다. [] 내에서 ^를 사용하면 not의 의미임

9) {} : 횟수나 범위를 나타냄. 예를 들어 k{5}의 경우 k가 5번 반복되는 경우임, a{3,5}는 a가 3번 이상 5번 이하 반복되는 경우임

10) \w : 알파벳이나 숫자

11) \W : \w의 not. 즉 알파벳이나 숫자를 제외한 문자

12) \d : [0-9]와 동일

13) \D : 숫자를 제외한 모든 문자

 

기본적인 정규 표현식과 그 예를 모아보면 다음과 같습니다.

 

1) 숫자만 : ^[0-9]*$

2) 영문자만 : ^[a-zA-Z]*$

3) 한글만 : ^[가-힣]*$

4) 영어 & 숫자만 : ^[a-zA-Z0-9]*$

5) E-Mail : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$

6) 휴대폰 : ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$

7) 일반전화 : ^\d{2.3} - \d{3,4} - \d{4}$

8) 주민등록번호 : \d{6} \- [1-4]\d{6}

9) IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})

 

이외에 자주 써먹는 정규식을 계속 모아야겠네요. ^^


Posted by 제로스틴
,