[Java] 문자열 자르기(추출) - 정규표현식(Pattern, Matcher)
2021. 1. 4. 22:53ㆍ프로그래밍 언어/Java
문자열을 정해져있는 구분자가 아닌 문자열 패턴으로 인식해서 자르기 또는 추출을 할 수 있는 방법이 있습니다.
정규표현식(Regular expressions)을 이용한 방법으로 정규식이라고 부르기도 합니다.
정규표현식을 이용하여 일정한 패턴을 지정하여 찾을 수 있습니다.
Pattern, Matcher 사용법
먼저 숫자만 추출하는 예제를 통해서 Pattern, Matcher 사용법을 알아보겠습니다.
String str = "2020-12-31, 2021/01/03";
Pattern p = Pattern.compile("([0-9])+"); // 검색할 문자열 패턴 : 숫자
Matcher m = p.matcher(str); // 문자열 설정
while (m.find()) {
System.out.println(m.group());
}
// 출력
2020
12
31
2021
01
03
1. Pattern.complie() 함수에 검색할 문자열 패턴을 파라미터로 설정합니다. 현재 예제는 숫자만 검색하는 패턴을 설정하였습니다.
2. matcher() 함수에 원본 문자열을 파라미터로 설정하고 리턴값으로 Matcher 클래스를 받습니다.
3. find() 함수로 검색결과가 존재하는지 확인할 수 있습니다. 패턴에 해당하는 서브문자열이 존재하면 true를 리턴합니다.
4. group() 함수로 검색한 서브문자열을 가져올 수 있습니다.
대괄호 사용법
대괄호를 사용하여 문자 패턴을 인식하는 것을 알아보겠습니다.
정규표현식에 나오는 괄호를 잘 사용하면 다양하고 복잡한 패턴을 인식할 수 있습니다.
표현식 | 설명 |
[abc] | 대괄호 안에 있는 문자 1개 인식 a or b or c와 같음 |
[^abc] | 대괄호 안에 있는 문자가 아닌 문자를 인식(NOT 연산) a, b, c 이외의 문자 |
[0-9] | 0부터 9까지의 범위 중 한 문자 인식 |
[a-zA-Z] | 소문자, 대문자를 인식 |
[a-z&&[def]] | a~z까지 1문자 and d/e/f 중 1글자 인식 |
표현식
정규식 패턴 안에서 사용가능한 주요 표현식 목록입니다.
표현식 | 설명 |
[ ] | 문자의 집합 또는 범위를 나타냄 대괄호 안의 ^ 표시는 NOT을 뜻함 |
{ } | 횟수 또는 범위를 나타낸다. |
( ) | 소괄호 안의 문자를 하나의 그룹으로 인식 |
. | 임의의 한 문자 단, \는 넣을 수 없음 |
* | 앞 문자가 0개 이상 존재 |
+ | 앞 문자가 1개 이상 존재 |
? | 앞 문자가 없거나 하나 존재 |
^ | 문자열의 시작 |
$ | 문자열의 종료 |
| | 패턴 안에서 or 연산 수행 |
&& | 패턴 안에서 and 연산 수행 |
\s | 공백문자 \t\n\x0B\f\r |
\S | 공백 문자가 아닌 나머지 문자 [^\s]와 동일 |
\w | 영숫자와 _(언더바) [a-zA-Z_0-9]와 동일 |
\W | 영숫자를 제외한 문자 [^\w]와 동일 |
\d | 숫자 [0-9]와 동일 |
\D | 숫자를 제외한 모든 문자 [^0-9]와 동일 |
\ | 확장문자 \ 다음에 일반 문자가 오면 특수문자로 취급 |
(?i) | 대소문자를 구분하지 않음 |
자세한 사용법은 다른 글에서 다양한 예제와 함께 알아보도록 하겠습니다.
관련글:
2020/12/28 - [Java] - [Java] 문자열 자르기 - 정규표현식(split)
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] Date - 오늘 날짜/시간 출력 (0) | 2021.02.15 |
---|---|
[Java] 문자열 자르기(추출) - 정규표현식 예제 (0) | 2021.01.08 |
[Java] 문자열 자르기 - char형 구분자 (0) | 2020.12.30 |
[Java] 문자열 자르기 - 정규표현식(split) (0) | 2020.12.28 |
[Java] 문자열 자르기 - 여러 구분자/특수기호 사용하기 (0) | 2020.12.21 |