정규식을 위한 특수문자 예약어 및 의미
^ : 문자열 처음 ex) ^a : 문자열 처음이 a로 시작함 $ : 문자열 끝 ex) a$ : 문자열 끝이 a로 끝남 + : 앞 글자가 1개 이상 존재함 ex) a+ : a라는 글자가 1개 이상이다. * : 앞 글자가 0개 이상 존재함 ex) a* : a라는 글자가 없거나 반복된다. ? : 앞 글자가 없거나 1개 존재 ex) a? : a라는 글자가 없거나 1개만 있다. . : 모든 글자 {} : 반복횟수 ex) a{3} : a라는 글자가 3번 반복됨. a{3,5} : a가 3번 이상 5번 이하 반복된 경우를 나타낸다.

a{3,}이면 a가 3번 이상 반복인 경우를 말한다. [] : 문자열 그룹 ex) [abc] : a or b or c 문자 , 범위는 [a-zA-Z0-9] 와 같이 -기호로 표시

[^abc] : 해당 문자들을 제외함(not)
( ) : 소괄호 ‘( )’ 특수문자는 ‘( )’ 특수문자 안의 글자들을 하나의 문자로 인식. 

ex)  ‘gu(gg){2}le’ 와 같은 패턴을 작성하게 되면  ‘guggggle' 문자열이 문자열에 포함되어 있어야 한다. | : (쉬프트 역슬래시) 패턴 안에서 OR연산을 사용할 때 사용합니다. 예를 들어 'hi|hello' 는 hi 나 hello 가 포함      있는 문자열을 의미
\w : 알파벳이나 숫자 \W : 알파벳이나 숫자를 제외한 문자 \d : 숫자 [0-9]와 동일 \D : 숫자를 제외한 모든 문자 \: 위의 각 기능에서 벗어난다(escape). (?i): 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않는다 (물음표+소문자i(아이))

예제

1. 문자열에서 [ , ] 문자들을 찾아 제거하라

'[' , ']' 는 예약어이므로 예약어가 아닌 문자라는 의미로 '\[' 로 표기해야 한다.

하지만, 문자열내의 '\'는 다시 특수문자 예약어이기에 '\\[' 로 적어줘야 정상적이 표시가 이루어진다.

String value = "[test]";

String result = value.replaceAll( "[\\[\\]]", "");

2. < > 으로 쌓여진 문자열이 포함되는지 확인하라

<,> 는 별도의 정규식 예약어가 아니다. < 로 시작하고, >로 끊나는 문자열 들을 찾으면 된다.

<+ : < 문자가 1개 이상이어야 함.

>+ : > 문자가 1개 이상이어야 함.

[a-zA-Z]* : 알파벳(대/소)만을 가지며 그 수는 제한없음.

if( value.matches("<+[a-zA-Z]*>+") ) {


}
기본적인 문자열 검증 정규식 ^[0-9]*$ : 숫자만 ^[a-zA-Z]*$ : 영문자만 ^[가-힣]*$ : 한글만 ^[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))$)
클래스 사용 예. A typical invocation sequence is thus Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); boolean b = Pattern.matches("a*b", "aaaaab");
참고 사이트 자바, 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

[출처] http://blog.naver.com/beabeak?Redirect=Log&logNo=50126941465 에서 수정 및 추가함

- 회사에 적용한 방법 <o:*> 로 시작하는 태그들  삭제(내용은 살려둠)

final Pattern HTML_VOS = Pattern.compile("\\<O:.*?\\>", Pattern.CASE_INSENSITIVE);

final Pattern HTML_VOS = Pattern.compile("\\</O:.*?\\>", Pattern.CASE_INSENSITIVE);


'프로그래밍 > JAVA' 카테고리의 다른 글

전자정부 프레임워크 3.2 공통 콤포넌트  (2) 2016.11.21
indexOf와 startwith 의 차이  (0) 2012.08.13
HashMap, HashTable의 비교  (0) 2012.08.13

+ Recent posts