티스토리 뷰
<< 정규표현식 >>
텍스트를 검색하거나 치환하거나 텍스트 안에서 특정 문자열을 추출하려고 할때 사용
특수문자나 기호로 만들어진 패턴이라고 생각
1. 자바 API
String클래스의 matches메소드
java.util.regex패키지의 클래스를 이용해서 작업
1) Pattern클래스
- 패턴 문자열을 관리하고 패턴을 정의할 때 사용
2) Matcher클래스
- 패턴과 일치하는 문자열을 관리하기 위한 클래스
find() - 패턴이 만족하는지 확인 (true | false)
group() - 일치하는 패턴문자열 리턴
start() - 매칭되는 패턴의 start인덱스
end() - 매칭되는 패턴의 end index+1
package pattern.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest01 {
public static void main(String[] args) {
String str = "java, hi ~~~ java";
String str1 = "$100. . 한. $20.0. ^^$";
String patternStr = "java"; // 1. 정확하게 일치
String patternStr1 = "Java"; // 2. 대소문자 구분없이 문자열이 동일한 경우 찾기
String patternStr2 = "Java,hi"; // 3. space, tab, new line의 구분을 정확하게
String patternStr3 = "^java"; // 4. 특정문자열로 시작
String patternStr4 = "java$"; // 5. 특정문자열로 끝나는지 확인
String patternStr5 = "^$"; // 패턴에서 쓰는 기호를 패턴문자열로 사용하고 싶은 경우
// 패턴기호를 실행시키기 때문에 불가능
// 일반 문자열로 인식시키기 위해서 \\와 함께사용
// $로 시작하는 문자열
String patternStr6 = "^\\$"; // 6. $로 시작하는 문자열
String patternStr7 = "\\$$"; // 7. $로 종료하는 문자열
String patternStr8 = "."; // .은 한글자를 의미 - 모든 문자열이 한 문자에 해당
// 한 문자씩 잘라서 리턴
String patternStr9 = "\\."; // 8. .문자가 있는 것을 찾아서 리턴
String patternStr10 = "...."; // 9. .이 4개 - 4글자씩 잘라서 리턴
String patternStr11 = "\\..\\."; // 10. .과 . 사이의 한글자가 있는 문자열
equalsPattern(str1, patternStr11);
}
public static void equalsPattern(String str, String patternStr) {
// Pattern pattern = Pattern.compile(patternStr); // 1. 정확하게 일치
Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(str);
while (m.find()) {
System.out.println(m.group());
System.out.println(m.start() + ":" + (m.end() - 1));
}
}
}
-
실행
-
문자열 : "java, hi ~~~ java";
-
정확하게 일치
2. 대소문자 구분없이 문자열이 동일한 경우
3. space, tab, new line의 구분을 정확하게
4. 특정문자열로 시작
5. 특정문자열로 끝나는지 확인
- 문자열 : "$100. . 한. $20.0. ^^$";
6. $로 시작하는 문자열
7. $로 끝나는 문자열
8. .문자가 있는 것을 찾아서 리턴
9. .이 4개 - 4글자씩 잘라서 리턴
10. .과 . 사이의 한글자가 있는 문자열
package pattern.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest02 {
public static void main(String[] args) {
String str = "ja1111aCva--@@-@@@@- 한글 --@@@@-- progra44568EmgFmiJng";
// String str = "amJAVA _java aaaxl programming and spring , hadoop";
// String patternStr = "a|m|g"; // 1. | 는 or을 의미 a이거나 m이거나 g인 문자열 추출
// String patternStr = "[amg]"; // 2. []는 문자열의 집합이나 범위를 표현
// 문자와 문자 사이를 나타내려면 -을 사용
// []안에서 ^는 부정의 의미로 해석
// String patternStr = "[amg][ma]"; // 3. 두 글자를 추출
// 첫 글자가 a|m|g 이고
// 두 번째 글자가 m|a인 문자열
// -> am, aa, mm, ma, gm, ga
// String patternStr = "[c-j]"; // 4. 소문자 c에서 j사이에 해당하는 문자
// String patternStr = "[C-J]"; // 5. 대문자 C에서 J사이에 해당하는 문자
// String patternStr = "[C-Jc-j]"; // 6. 대문자, 소문자 c에서 j사이에 해당하는 문자
// String patternStr = "[4-8]"; // 7. 4에서 8사이 숫자
// String patternStr = "[^4-8]"; // 8. 4에서 8사이 숫자가 아닌 모든 문자
// String patternStr = "[^c-j]"; // 9. c에서 j사이의 문자열이 아닌 문자
// String patternStr = "[A-za-z0-9]"; // 10. 영문자와 숫자만 추출
// String patternStr = "[^A-za-z0-9]"; // 11. 영문자, 숫자를 제외한 문자
String patternStr = "[가-힣]"; // 12. 한글만 추출
equalsPattern(str, patternStr);
}
public static void equalsPattern(String str, String patternStr) {
Pattern pattern = Pattern.compile(patternStr);
Matcher m = pattern.matcher(str);
while (m.find()) {
System.out.println(m.group());
System.out.println(m.start() + ":" + (m.end() - 1));
}
}
}
-
문자열
String str = "amJAVA _java aaaxl programming and spring , hadoop";
-
| 는 or을 의미 a이거나 m이거나 g인 문자열 추출
String patternStr = "a|m|g"; // 1. | 는 or을 의미 a이거나 m이거나 g인 문자열 추출
2. []는 문자열의 집합이나 범위를 표현
String patternStr = "[amg]"; // 2. []는 문자열의 집합이나 범위를 표현
3. 첫 글자가 a|m|g 이고 두 번째 글자가 m|a인 문자열
String patternStr = "[amg][ma]";
4. 소문자 c에서 j사이에 해당하는 문자
String patternStr = "[c-j]";
5. 대문자 C서 J사이에 해당하는 문자
String patternStr = "[C-J]";
6. 대문자, 소문자 c에서 j사이에 해당하는 문자
String patternStr = "[C-Jc-j]";
-
문자열
String str = "ja1111aCva--@@-@@@@- 한글 --@@@@-- progra44568EmgFmiJng";
7. 4에서 8사이 숫자
String patternStr = "[4-8]";
8. 4에서 8사이 숫자가 아닌 모든 문자
String patternStr = "[^4-8]";
9. c에서 j사이의 문자열이 아닌 문자
String patternStr = "[^4-8]";
10. 영문자와 숫자만 추출
String patternStr = "[A-za-z0-9]";
11. 영문자, 숫자를 제외한 문자
String patternStr = "[^A-za-z0-9]";
12. 한글만 추출
String patternStr = "[가-힣]";
- 수량체크를 하기 위한 패턴기호
-
\* : *앞의 문자나 기호를 0~N 개 추출
-
\+ : + 앞의 문자나 기호를 1~N 개 추출
-
? : ? 앞의 문자나 기호를 0~1개 추출
-
{n} : n개
-
{n, m} : n이상 m이하
-
{n,} : n이상
-
package pattern.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest03 {
public static void main(String[] args) {
// String str = "ja1111aCva--@@-@@@@- 한글 --@@@@-- progra44568-@Emg-Fm-@i-Jng";
String str = "amJAVA _java aaaxl programming and spring , hadoop";
// String patternStr = "-@*-"; // 1. -- 사이에 @만 0~N개
// String patternStr = "-@+-"; // 2. -- 사이에 @만 1~N개
// String patternStr = "-@?-"; // 3. -- 사이에 @만 0~1개
// String patternStr = "[^ ]"; // 4. 공백이 아닌 모든 문자
// String patternStr = "[amv]{1,3}"; // 5. amv에 해당하는 문자열
// [amv],[amv][amv],[amv][amv][amv] 와 같다
// String patternStr = ".{5}"; // 6. 5자리씩 출력
// String patternStr = "[a-z]{3,}"; // 7. 영문 소문자가 3자리 이상인 문자열
// String patternStr = "[A-z]{3,}"; // 8. 영문 대,소문자가 3자리 이상인 문자열
// String patternStr = "\\w"; // 9. 영문자 대소문자, 숫자 모두 추출, _
// String patternStr = "\\W"; // 10. \\w의 반대 문자열 추출
// String patternStr = "\\d"; // 11. 숫자만 추출
String patternStr = "\\D"; // 12. 숫자를 제외한 나머지 (\\d의 반대)
equalsPattern(str, patternStr);
}
public static void equalsPattern(String str, String patternStr) {
Pattern pattern = Pattern.compile(patternStr);
Matcher m = pattern.matcher(str);
while (m.find()) {
System.out.println(m.group());
System.out.println(m.start() + ":" + (m.end() - 1));
}
}
}
-
문자열
String str = "ja1111aCva--@@-@@@@- 한글 --@@@@-- progra44568-@Emg-Fm-@i-Jng";
1. -- 사이에 @만 0~N개
String patternStr = "-@*-"; // -- 사이에 @만 0~N개
2. -- 사이에 @만 1~N개
String patternStr = "-@+-"; // 2. -- 사이에 @만 1~N개
3. -- 사이에 @만 0~1개
String patternStr = "-@?-"; // 3. -- 사이에 @만 0~1개
4. 공백이 아닌 모든 문자
String patternStr = "[^ ]"; // 4. 공백이 아닌 모든 문자
5. amv에 해당하는 문자열 : [amv],[amv][amv],[amv][amv][amv] 와 같다
String patternStr = "[amv]{1,3}";
6. 5자리씩 출력
String patternStr = ".{5}";
7. 영문 소문자가 3자리 이상인 문자열
String patternStr = "[a-z]{3,}"; // 7. 영문 소문자가 3자리 이상인 문자열
8. 영문 대,소문자가 3자리 이상인 문자열
String patternStr = "[A-z]{3,}"; // 8. 영문 대,소문자가 3자리 이상인 문자열
9. 영문자 대소문자, 숫자, _ 추출
String patternStr = "\\w";
10. \\w의 반대 문자열 추출
String patternStr = "\\W";
11. 숫자만 추출
String patternStr = "\\d";
12. 숫자를 제외한 나머지
String patternStr = "\\D"; // 12. 숫자를 제외한 나머지 (\\d의 반대)
package pattern.test;
import java.util.regex.Pattern;
public class PatternAPITest02 {
public static void main(String[] args) {
System.out.println(Pattern.matches("[0-9]+", "1234java"));
System.out.println(Pattern.matches("[0-9]+", "java"));
System.out.println(Pattern.matches("[0-9]+", "1234"));
System.out.println(Pattern.matches("[0-9]+", "1"));
System.out.println(Pattern.matches("[0-9]+", ""));
}
}
package pattern.test;
import java.util.regex.Pattern;
public class PatternAPITest02 {
public static void main(String[] args) {
System.out.println(Pattern.matches("[0-9A-z]+", "1234java"));
System.out.println(Pattern.matches("[0-9A-z]+", "java"));
System.out.println(Pattern.matches("[0-9A-z]+", "1234"));
System.out.println(Pattern.matches("[0-9A-z]+", "1"));
System.out.println(Pattern.matches("[0-9A-z]+", ""));
}
}
'JAVA' 카테고리의 다른 글
Modern Java - Lambda, Stream (0) | 2020.10.22 |
---|---|
JAVA 설치 및 환경변수 설정 (0) | 2020.05.15 |
- Total
- Today
- Yesterday
- Spring
- hadoop
- mapreduce
- RAID Architecture
- jdbc
- vmware
- Allocation methods
- Variable allocation
- 빅데이터
- springboot
- oracle
- SPARK
- Disk System
- Free space management
- linux
- Java
- Flume
- aop
- gradle
- 빅데이터 플랫폼
- JSON
- Replacement Strategies
- I/O Mechanisms
- HDFS
- I/O Services of OS
- Disk Scheduling
- 하둡
- File Protection
- SQL
- maven
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |