캠핑과 개발


ㅁ Pattern 클래스 : 정규식 패턴을 지정 정의
ㅁ Matcher 클래스 : 정규식 패턴을 데이터와 비교 

1단계 : 정규식에 해당하는 Pattern 인스턴스를 얻는다.
Pattern p = Pattern.compile("c[a-z]*");

2단계 : 정규식을 적용하여 비교할 Matcher 인스턴스를 얻는다.
Matcher m = p.matcher(data[i]);

3단계 : 정규식 여부를 확인한다.
if문 사용시 : if(m.matches()) {}

 

ㅁ 정규식 Rule
- 리터럴([]) 범위 지정 : [0-9] - 숫자, [a-z] - 소문자, [a-zA-Z]알파벳
- 리터럴(.) 모든범위문자
- 리터럴* : 해당 리터럴이 0번 이상 반복
- 리터럴+ : 해당 리터럴이 1번 이상 반복(반드시 1번은 나옴)
- ^리터럴 : 리터럴 조건을 만족하지 않는~
- 리터릴|리터럴 : 택1
- 리터럴{숫자} : 숫자만큼 반복
- (리터럴) : 리터럴 그룹화, 그룹화된 리터럴은 Matcher클래스의 인스턴스 메소드 group(int i) 호출을 통해 그룹단위로 얻을 수 있다.

 

ex1) [b|c].*{7} : b 또는 c로 시작하는 8자리 문자열
ex2) c.*d : c로 시작하고 d로 끝나는 문자열
ex3) 전화번호 정규식 : (0\d{1,2})-(\d{3,4})-(\d{4})

>>
 String ptn = "(0\\d{1,2})-(\\d{3,4})-(\\d{4});
 Pattern p = Pattern.compile(ptn);
 Matcher m = p.matcher("012-1234-4567");

>>
String regex = ".*he5|.*h5";
  String str = "he5chhh.h5hh.he85";
  Pattern p = Pattern.compile(regex);
  Matcher m = p.matcher(str.toLowerCase());
  System.out.println(m.matches());

 if(m.find())
  System.out.println( m.group() + " has " + m.group(1) + ", " + m.group(2) + ", " + m.group(3) );

[출처] http://blog.naver.com/junz0279?Redirect=Log&logNo=70046805130