목차
정규식 (= 정규표현식 Regular Expression)
플래그 (Flags)
정규식 패턴 (RegEx Patterns)
메타문자 (Metacharacters)
수량자 (Quantifiers)
회피문자 - 특수문자 검색
정규식 관련 주소
정규식 (= 정규표현식 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
\u xxxx
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개
정규식 관련 주소
주소 복사
랜덤 이동
최신댓글