Perl같은 스크립트 언어는 언어 자체에서 강력한 정규표현식을 구현하고 있어, 문자열, 텍스트 처리에 특화된 스크립트를 작성할 수 있다.자바에서도 이러한 정규표현식을 사용할 수 있도록 여러가지 유틸을 제공하고 있다.
java.util.regex.Pattern 클래스는 matches()메소드를 지원한다. 이 메소드로 특정 문자열이 주어진 정규식에 매칭되는지 테스팅 해볼 수 있음.
String Pattern = "^[0-9]*$"; // 숫자만 있는지 패턴 작성
String str = "123321";
boolean result = Pattern.matches(pattern,str);
System.out.println(result); //true
그외 지원하는 다른 메소드들
| 메소드 | 내용 |
|---|---|
| compile(String regex); | 주어진 정규표현식으로부터 패턴생성 |
| matcher(CharSequence input); | 대상 문자열이 패턴과 일치할 경우 True 반환 |
| asPredicate(); | 문자열을 일치시키는데 사용할 수 있는 Predicate 작성 |
| pattern | 컴파일된 정규표현식을 String형태로 변환 |
| split(CharSequence input) | 문자열을 주어진 인자값 CharSequence패턴에 따라 분리 |
Matcher 클래스는 문자열의 패턴을 해석하고 주어진 패턴과 일치하는지 체크할 때 주로 사용
Pattern pattern = Pattern.compile("^[0-9]*$");
String str = "041234234";
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.find());
| 메소드 | 내용 |
|---|---|
| matches() | 대상 문자열과 패턴이 일치하는 경우 true반환 |
| find() | 대상 문자열과 패턴이 일치하는 경우 true반환하고 그위치로 이동 |
| find(int start) | start인자로 받은 위치부터 매칭 체크 |
| start() | 매칭되는 문자열의 시작위치를 반환 |
| start(int group) | 지정된 그룹이 매칭되는 시작위치 반환 |
| end() | 매칭되는 문자열의 끝 바로 다음 위치를 반환 |
| end(int group) | 지정된 그룹이 매칭되는 끝 바로 다음 문자 위치를 반환 |
| 문자 | 내용 |
|---|---|
| ^ | 문자열의 시작 |
| $ | 문자열의 끝 |
| . | 임의의 한 문자 |
* | 문자가 0번 이상 발생 |
| + | 문자가 1번 이상 발생 |
| ? | 문자가 0번 혹은 1번 발생 |
| [ ] | 문자의 집합 범위를 나타냄 [0-9] : 숫자 (0부터9) [a-z] : 알파벳 (a부터z) 앞에 ^가 나타나면 not을 의미한다. |
| { } | 횟수 또는 범위를 의미 |
| ( ) | 소괄호 안의 문자를 하나의 문자로 인식 |
| | | OR 조건 |
| \ | 확장문자의시작 |
| \b | 단어의 경계 |
| \B | 단어가 아닌 것의 경계 |
| \A | 입력의 시작부분 |
| \G | 이전 매치의 끝 |
| \Z | 입력의 끝이지만 종결자가 있는경우 |
| \z | 입력의 끝 |
| \s | 공백문자 |
| \S | 공백문자가 아닌 나머지 문자 |
| \w | 알파벳이나 숫자 |
| \W | 알파벳이나 숫자를 제외한 문자 |
| \d | [0-9]와 동일 |
| \D | 숫자를 제외한 모든 문자 |