정규표현식
정규표현식에 대해 정리를 한 내용 입니다.
정규식이란?
정규식은 검색 패턴을 형성하는 일련의 문자입니다.
텍스트에서 데이터를 검색 할 때이 검색 패턴을 사용하여 검색중인 내용을 설명 할 수 있습니다.
정규식은 단일 문자이거나 더 복잡한 패턴 일 수 있습니다.
정규식을 사용하여 모든 유형의 텍스트 검색 및 텍스트 바꾸기 작업 을 수행 할 수 있습니다 .
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()에 정하고자 하는 정규표현식의 형태를 넣어줍니다.
그에 따른 결과는 다음과 같습니다.