728x90

[공지]java 정규식 문법   일반 / JAVA  

2011.11.20. 02:04

복사http://blog.naver.com/beabeak/50126941465

전용뷰어 보기

정규표현식 문법

^ : 문자열의 시작을 나타냄. 

$ : 문자열의 종료를 나타냄. 

. : 임의의 한 문자를 나타냄. (문자의 종류는 가리지 않는다)

| : or를 나타냄. 

? : 앞 문자가 없거나 하나있음을 나타냄. 

+ : 앞 문자가 하나 이상임을 나타냄. 

* : 앞 문자가 없을 수도 무한정 많을 수도 있음을 나타냄. 

[] : 문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내며 두 문자 사이는 '-' 기호로 범위를 나타낸다. 

      []내에서 ^ 가 선행하여 나타나면 not 를 나타낸다. 

{} : 선행문자가 나타나는 횟수 또는 범위를 나타낸다. 

a{3} 인 경우 a가 3번 반복된 경우를 말하며, a{3,}이면 a가 3번 이상 반복인 경우를 말한다. 또한 a{3,5}인 경우 

a가 3번 이상 5번 이하 반복된 경우를 나타낸다. 

( ): 소괄호 ‘( )’ 특수문자는 ‘( )’ 특수문자 안의 글자들을 하나의 문자로 봅니다. 예를 들어 ‘gu(gg){2}le’ 와 같은 패턴을 작성하게 되면    

     ‘guggggle' 문자열이 문자열에 포함되어 있어야 됩니다.

|: 패턴 안에서 OR연산을 사용할 때 사용합니다. 예를 들어 'hi|hello' 는 hi 나 hello 가 포 함되어있는 문자열을 의미합니다.

\w : 알파벳이나 숫자

\W : 알파벳이나 숫자를 제외한 문자

\d : 숫자 [0-9]와 동일

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

\: 위의 각 기능에서 벗어납니다(escape).

(?i): 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않는다 (물음표+소문자i(아이))

 

java 에서 사용되는 문법

\p(Alpha): 대,소문자 아파벳

\p(Digit): 숫자를 의미한다. 

\p{Alnum}: 대, 소문자 알파벳, 숫자를 의미함.

-->[\p{Alnum}] : 아파벳, 숫자 중 한 문자를 의미한다. 

 

기본적인 문자열 검증 정규식

 

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

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

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

^[\uac00-\ud7af]*$  :  한글만 // unicode를 사용한 한글 식별 처리.

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

.+ : 한문자 이상의 전체문자를 표시한다.

 

정규식 표현 예제

이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$  or  ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$ 

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

일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$

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

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

파일확장자: ([^\s]+(\.(?i)(jpg|png|gif|bmp))$)

 

javascript 문자열 추출

var url = '10/url.do?chartId=kkkk&chgg=kiii';

var reg = /[?&]chartId=([^&]*)?/g

//var reg = /chartId=(.*)?&?/g

values =  reg.exec(url);

display.innerHTML = values;

 

* 주의 사항: group을 이용하여 문자열을 추출 할 때는 ()안에 명확한 정규식을 써야 한다. 

위의 // 주석으로 처리된 부분처럼 (.*) 표현하면 나머지 문자열을 모두 추출해버린다. 

 

클래스 사용 예.

A typical invocation sequence is thus  

Pattern p = Pattern.compile("a*b"); 

Matcher m = p.matcher("aaaaab"); 

boolean b = m.matches();

 

A matches method is defined by this class as a convenience for when a regular expression is used just once. 

This method compiles an expression and matches an input sequence against it in a single invocation. The statement  

 

boolean b = Pattern.matches("a*b", "aaaaab");


# 정규식을 이용한 금칙어 조회 샘플 

 public void checkBadWord(){

  String regPice = "[0123456789 \\?+-\\.,!@#$%\\^&\\*\\(\\);\\\\\\/\\|<>\\\"\\']*";

  String subsPice= "\\?";

  

  String samplePattern = "변?태";

   

  

  String checkRegex = samplePattern.replaceAll(subsPice, Matcher.quoteReplacement(regPice));

  System.out.println(checkRegex);

  

  String[] sampleWords=new String[]{"변?태","변***태","경기도 변()태님", "변///\\태짓을"};

  

  Pattern ptrn = Pattern.compile(checkRegex);

  for(String word: sampleWords){

   Matcher matcher = ptrn.matcher(word);

   boolean check = matcher.find();

   if (check){

    System.out.println(word+" check:"+check+", 체크 단어:"+matcher.group());

   }

  }

 }




정규식 테스트 사이트

RegExr: http://gskinner.com/RegExr/ 

 

참고 사이트

자바, javascript, oracle 정규식: http://litlhope.springnote.com/pages/1786498

자바 정규식 간단 설명: http://twinstarbox.tistory.com/entry/Java-%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

URL 정규식으로 분리하기: http://goodidea.tistory.com/86

 

 

[출처] java 정규식 문법|작성자 완전컴맹

728x90

+ Recent posts