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

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

2,761  
목차
  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 - instanceof 키워드 - 객체가 클래스(또는, 인터페이스)의 인스턴스인지 체크. (= 인스…
Keyword Java - int 키워드 - int 정수 자료형 변수 선언.
Keyword Java - interface 키워드 - 인터페이스 선언
Keyword Java - long 키워드 - long 자료형 정수 담는 변수 선언.
Keyword Java - module 키워드 △ - 모듈 선언.
Keyword Java - native 키워드 △ - 메서드가 동일 Java 소스 파일(다른 언어)에서 구현되지 않도록 지…
Keyword Java - new 키워드 - 새로운 객체 생성 (= new키워드 = 뉴키워드)
Keyword Java - package 키워드 - 패키지 선언.
Keyword Java - private 키워드 - 선언된 클래스 안에서만 접근 가능 설정.
Keyword Java - protected 키워드 - 같은 패키지 및 서브 클래스에서만 접근 가능 설정.
Keyword Java - public 키워드 - 다른 클래스의 접근을 허용. (= 퍼블릭)
Keyword Java - requires 키워드 △ - 모듈 내부에 필요한 라이브러리 지정. (Java 9 이상)
Keyword Java - return 키워드 - 메서드 실행 후, 값을 반환.
Keyword Java - short 키워드 - short 정수 자료형 선언.
Keyword Java - static 키워드 - 객체 생성 없이 바로 접근 가능한 (메서드/속성) 선언.
Keyword Java - strictfp 키워드 △ - 부동 소수점 계산 정밀도 및 반올림 제한.
Keyword Java - super 키워드 - 슈퍼클래스 (= 부모클래스) 객체 의미.
Keyword Java - switch 키워드 - switch 조건문 선언.
Keyword Java - synchronized 키워드 △ - 한 번에 하나의 스레드에서만 메소드에 접근 가능 지정하는 …
Keyword Java - this 키워드 - (메서드・생성자)에서 현재 객체 지칭. (= 디스)
5/10
목록
찾아주셔서 감사합니다. Since 2012