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

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

2,754  
목차
  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개

 

 

정규식 관련 주소

 

 



분류 제목
Keyword Java - catch 키워드 - try 구문에서 에러 발생 시 실행할 내용 정의 (= catch키워드 = …
Keyword Java - char 키워드 - 2byte 크기의 '단일 문자' 지정 자료형.
Keyword Java - class 키워드 - 클래스 정의/선언
Keyword Java - continue 키워드 - 반복문에서 특정 조건 건너뛰기
Keyword Java - const 키워드 - 상수 지정. (※ 사용폐기. final 키워드로 대체.)
Keyword Java - default 키워드 - switch 조건문에서 기본 실행코드 정의. (= 디폴트)
Keyword Java - do 키워드 - do...while... 반복문에서 일단 먼저 실행할 코드 정의.
Keyword Java - double 키워드 - double 자료형 소수 선언.
Keyword Java - else 키워드 - if 조건문에서 if 조건이 거짓일 때 실행할 내용.
Keyword Java - enum 키워드 - 상수 열거형 클래스
Keyword Java - exports 키워드 △ - 모듈과 함께 패키지 내보내기. (※ Java 9에 추가.)
Keyword Java - extends 키워드 - 클래스를 상속.
Keyword Java - final 키워드 - (변수/메서드/클래스)의 (재정의/상속) 방지. + 상수 지정. (= 파이…
Keyword Java - finally 키워드 - try...catch..구문에서 exceptions 유무와 상관없이 마…
Keyword Java - float 키워드 - float (부동소수) 자료형 선언.
Keyword Java - for 키워드 - for 반복문 선언.
Keyword Java - goto 키워드 - 사용 폐기.
Keyword Java - if 키워드 - if 조건문 선언.
Keyword Java - implements 키워드 - interface (인터페이스)를 구체적으로 구현.
Keyword Java - import 키워드 - 패키지(package), 클래스(class), 인터페이스(interfac…
4/10
목록
찾아주셔서 감사합니다. Since 2012