• 회원가입
  • 로그인
  • 구글아이디로 로그인

[class] Java - RegEx (정규식) - 정규표현식

2,550  
목차
  1. 정규식 (= 정규표현식 Regular Expression)
  2. 플래그 (Flags)
  3. 정규식 패턴 (RegEx Patterns)
  4. 메타문자 (Metacharacters)
  5. 수량자 (Quantifiers)
  6. 회피문자 - 특수문자 검색
  7. 정규식 관련 주소

 

정규식 (= 정규표현식 Regular Expression)

 

검색 패턴을 형성하는 일련의 문자. 

 


 

1.

데이터 검색하거나 검색된 데이터를 변경 시 유용한데.

정규식은 단일 문자이거나 더 복잡한 패턴 일 수 있음.

 

2.

Java에는 기본 내장된 정규식 클래스 없지만,

java.util.regex 패키지 가져와 정규식 사용 가능.

 

PS.

java.util.regex 패키지에 포함된 클래스 용도.

Pattern 클래스 - 패턴 정의. (검색에 사용).

Matcher 클래스 - 패턴 검색.

PatternSyntaxException 클래스 - 정규식 패턴의 구문 오류 표시.

 


[예제]

 

import java.util.regex.Matcher;

import java.util.regex.Pattern;


public class Hz {

  public static void main(String[] args) {

    Pattern pattern = Pattern.compile("homzzang", Pattern.CASE_INSENSITIVE);

    Matcher matcher = pattern.matcher("홈짱닷컴 Homzzang.com");

    boolean matchFound = matcher.find();

    if(matchFound) {

      System.out.println("일치 발견 O");

    } else {

      System.out.println("일치 발견 X");

    }

  }

}

 

결과값:

일치 발견 O


PS. 위 예제 해설.

 

1.

Pattern.compile(a, b)

a : 검색 패턴. (위 예제: homzzang 텍스트 찾기.)

b : 플래그. (위 예제: 대소문자 구분 X)

 

2.

pattern.matcher(c) 메서드

c : 검색대상. (위 예제: '홈짱닷컴 Homzzang.com' 문자열)

패턴을 검색 대상에서 찾은 후, 검색 후 정보를 Matcher 객체로 반환. 

 

3.

matcher.find()

문자열에서 패턴 발견 시 true 반환. 그렇지 않으면 false 반환. 

 

 

플래그 (Flags)

 

패턴 검색 방법을 수정.

 


(예) Pattern.compile() 메서드의 플래그 경우,

 

Pattern.CASE_INSENSITIVE

검색 시, 대소문자 무시.

 

Pattern.LITERAL

패턴의 특수문자는 특별한 의미 없으며 검색시 일반 문자로 취급.

 

Pattern.UNICODE_CASE

비 영문 문자도 무시 위해 CASE_INSENSITIVE 플래그와 함께 사용.

 

PS.

더 자세한 건 아래 블로그 참조.


 

정규식 패턴 (RegEx Patterns)


Pattern.compile(a, b)

※ a : 검색 패턴.  이곳에 들어갈 패턴 종류는 아래 참고.

※ b : 플래그.



PS. 대괄호 :  문자 범위.

 

[abc]

a, b, c 중 하나이면 일치. 

 

[^abc]

a, b, c 아니면 일치. 

 

[a-zA-Z]

a~z까지 소문자, A~Z까지 대문자 중 하나면 일치.(범위)

 

[a-d[m-p]]

a~d까지, 또는 m~p까지 중에 하나면 일치. [a-dm-p] (합집합) 

 

[a-z&&[def]]

d, e, f 중 하나와 일치. (교집합)

 

[a-z&&[^bc]]

b와 c 제외한 a~z까지 중 하나면 일치. [ad-z] (차집합) 

 

[a-z&&[^m-p]]

m~p 까지 제외한 a~z까지 중 하나면 일치. [a-lq-z] (차집합)

 

 

메타문자 (Metacharacters)

 

특별한 의미 가진 문자.

 


 

|

|로 구분 된 패턴 중 하나와 일치하는 항목 찾음.

(예) html|css|js

 

.

어떤 문자의 인스턴스(=예제)를 하나만 찾음.

 

^

문자열의 시작 부분에서 일치 항목 찾음.

(예) ^Homzzang

 

$

문자열 끝에서 일치 항목 찾음.

(예) com$

 

\d

숫자 찾기.

 

\s

공백 문자 찾기.

 

\b

단어의 시작이나 끝에서 일치 항목 찾음. 

※ 시작에서 찾기 (예) \bHomzzang

※ 끝에서 찾기. (예) com\b

 

\uxxxx

16 진수 xxxx로 지정된 유니코드 문자 찾음.

 

 

수량자 (Quantifiers)

 

패턴이 나오는 횟수 지정.

 


 

n+

하나 이상의 n을 포함하는 모든 문자열과 일치.

 

n*

n이 0 개 이상 포함된 모든 문자열과 일치.

 

n?

n이 0개 또는 1개 포함된 모든 문자열과 일치.

 

n{x}

X n의 시퀀스를 포함하는 모든 문자열과 일치.

 

 

n{x, y}

X에서 Y까지의 시퀀스를 포함하는 모든 문자열과 일치.

 

n{x,}

적어도 X n의 시퀀스를 포함하는 모든 문자열과 일치.

 

 

회피문자 - 특수문자 검색

[특수문자 검색 방법]

 

\\특수문자

 

(예) 물음표 검색 경우, \\?


PS. 역슬래시 (= 입력 금지 회피) 2개가 필요한 이유.

  • 해당 특수문자 입력금지 회피용 1개
  • Java 문자열 내 백슬래시 입력금지 회피용 1개

 

 

정규식 관련 주소

 

 



분류 제목
class Java - LinkedList (링크트리스트) - 반복 접근 최적화 된 유사 배열
class Java - HashMap (해시맵) - key=value 쌍의 유사 배열. (Python Dictionar…
class Java - HashSet (해시셋) - 유일값만 인정하는 유사 배열. ※ Python의 Set과 유사.
class Java - Iterator (반복자)
class Java - Wrapper Classes (랩퍼 클래스)
class Java - Exceptions (= Try...Catch..) - 에러 제어 (= 익셉션 = 트라이...캐…
class Java - RegEx (정규식) - 정규표현식
class Java - Threads (쓰레드)
class Java - Lambda (람다 표현식)
file Java - File 클래스 + 메서드
file Java - Create/Write Files (파일 생성/쓰기)
file Java - Read Files (파일 읽기) - 파일 정보 얻기
file Java - Delete Files (파일 삭제)
Keyword Java - Keywords (키워드) 종류
Keyword Java - abstract 키워드 - 추상 (클래스/메서드) 선언.
Keyword Java - assert 키워드 △ - 디버깅 할 때 사용.
Keyword Java - boolean 키워드 - 참거짓 자료형 지정.
Keyword Java - break 키워드 - (반복문・switch 조건문) 탈출. (= 브레이크)
Keyword Java - byte 키워드 - 1byte 크기의 '정수형' 자료형 지정. (= 바이트)
Keyword Java - case 키워드 - switch 조건문의 각 조건 지정.
3/10
목록
찾아주셔서 감사합니다. Since 2012