정규표현식

2021-03-20

정규표현식에 대해 정리를 한 내용 입니다.


정규식이란?

정규식은 검색 패턴을 형성하는 일련의 문자입니다.

텍스트에서 데이터를 검색 할 때이 검색 패턴을 사용하여 검색중인 내용을 설명 할 수 있습니다.

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

정규식을 사용하여 모든 유형의 텍스트 검색 및 텍스트 바꾸기 작업 을 수행 할 수 있습니다 .

Java에는 기본 제공 정규식 클래스가 없지만 java.util.regex 정규식과 함께 작동 하도록 패키지를 가져올 수 있습니다 .

패키지에는 다음 클래스가 포함됩니다.

  • Pattern 클래스-패턴을 정의합니다 (검색에 사용됨).
  • Matcher 클래스-패턴 검색에 사용
  • PatternSyntaxException 클래스-정규식 패턴의 구문 오류를 나타냅니다.
package 정규표현식;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("junghyun100", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher("I wan find JUNGHYUN100");
        boolean matchFound = matcher.find();
        if(matchFound) {
            System.out.println("Match found");
        } else {
            System.out.println("Match not found");
        }
    }
}

위 클래스를 실행하면 결과는 "Match found" 가 출력됩니다.

이 예에서는 “junghyun100”라는 단어가 문장에서 검색됩니다.

먼저 Pattern.compile()방법을 사용하여 패턴을 만듭니다.

첫 번째 매개 변수(“junghyun100”)는 찾고자하는 단어가 들어갑니다.

두 번째 매개 변수에는 선택사항이지만,

검색에 대소 문자를 구분하지 않아야 함을 나타내는 플래그(Pattern.CASE_INSENSITIVE)를 넣었습니다.

matcher()메서드는 문자열에서 패턴을 검색하는 데 사용됩니다.

matcher.find()를 사용했을 때 찾고자하는 문자가 있다면 true, 아니라면 false가 반환되어

if문에 조건이 맞다면 "Match found"가 출력됩니다.

Matches만 이용해보자.

package 정규표현식;

public class Main {
    public static void main(String[] args) {
        String regularExpression = "^[a-z ]*$"; // 소문자와 공백 포함

        String testCase = "hello junghyun";
        if(testCase.matches(regularExpression)){
            System.out.println("소문자 알파벳와 공백으로만 구성되어있음.");
        }else{ 
            System.out.println("그 외 다른 요소가 포함되어있음.");
        }
    }
}
// Outputs Match found
  • ^ = 문자열의 시작을 나타냅니다.
  • $ = 문자열의 종료를 나타냅니다.
  • [] = 괄호 사이에있는 임의의 한 문자를 의미합니다.
  • - = 시작문자와 종료문자 사이의 범위를 지정합니다.
  • * = 표현식이 0회이상 일치한다는 뜻

결과적으로 소문자 a~z까지와 공백으로만 문자열이 구성되어있는가 판단하는 식입니다.

testCase를 만들어서 matches()에 정하고자 하는 정규표현식의 형태를 넣어줍니다.

그에 따른 결과는 다음과 같습니다.