연습용 사이트: regexr.com/5mhou
Chracter | 뜻 |
---|---|
| | 또는 |
() | 그룹 |
[] | 문자셋, 괄호안의 어떤 문자든 |
[^] | 부정 문자셋, 괄호안의 어떤 문자가 아닐때 |
Chracter | 뜻 |
---|---|
? | 없거나 있거나 (zero or one) |
* | 없거나 있거나 많거나 (zero or more) |
+ | 하나 또는 많이 (one or more) |
{n} | n번 반복 |
{min,} | 최소 |
{min,max} | 최소, 그리고 최대 |
Chracter | 뜻 | 예시 |
---|---|---|
\b | 단어 경계 | 정규식 : \btext\b 예시 문자열 매칭 결과 : text texts |
\B | 단어 경계가 아님 | 정규식 : text\B 예시 문자열 매칭 결과 : text texts |
^ | 문장의 시작 | |
$ | 문장의 끝 |
Chracter | 뜻 |
---|---|
\ | 특수 문자가 아닌 문자 |
. | 어떤 글자 (줄바꿈 문자 제외) |
\d | digit 숫자 |
\D | digit 숫자 아님 |
\w | [a-zA-Z_]와 동일 |
\W | [^a-zA-Z_]와 동일 |
\s | space 공백 |
\S | space 공백 아님 |
Chracter | 뜻 | 예시 |
---|---|---|
(?:) | 찾지만 그룹에 포함 안됨 | |
(?=) | =앞 문자를 기준으로 전방 탐색 | 정규식 : 500(?=M) 문자열 매칭 결과 : 500M 500 |
(?<=) | =뒤 문자를 기준으로 후방 탐색 | 정규식 : (?<=M)500 문자열 매칭 결과 : M500 500 |
Flag | 동등한 내장표현 | 뜻 | 예시 |
---|---|---|---|
Pattern.CASE_INSENSITIVE | (?i) | 대소문자 구분 x | (?i)^hello , Pattern.compile(^hello, Pattern.MULTILINE) |
Pattern.MULTILINE | (?m) | 다중행 모드 사용. 각 행의 처음과 끝을 ^와 $로 인식. | 정규식 : ^hello 문자열 매칭 결과 : hello everyone hello 정규식 : (?m)^hello 문자열 매칭 결과 : hello everyone hello |
Pattern.DOTALL | (?s) | .가 개행문자 까지 포함하는 모든 문자로 매칭. | 정규식 : hello.+hello 문자열 매칭 결과 : hello everyone hello 정규식 (?s)hello.+hello 문자열 매칭 결과 : hello everyone hello |
String something = "hello987";
boolean result = something.matches("[0-9]");
System.out.println(result); // false
String something = "hello987*-;";
String newSomething = something.replaceAll("[^a-z0-9]","0");
System.out.println(newSomething); // hello987000
String something = "hello987*-;";
String[] somethings = something.split("[0-9]+");
System.out.println(somethings[0]); // hello
System.out.println(somethings[1]); // *-;
String something = "hg2";
Pattern pattern = Pattern.compile("[a-z]");
Matcher matcher = pattern.matcher(something);
System.out.println(matcher.find()); // true -> h매칭
System.out.println(matcher.find()); // true -> g매칭
System.out.println(matcher.find()); // false -> g 다음에는 매칭되는 것 없음.
String something = "hello987*-;hi66";
Pattern pattern = Pattern.compile("([a-z]+)([0-9]+)");
Matcher matcher = pattern.matcher(something);
int count = 0;
while(matcher.find()){
System.out.println(matcher.group());
// hello987 (count = 0 일 때) hi66 (count = 1 일 때)
System.out.println(matcher.group(0));
// hello987 (count = 0 일 때) hi66 (count = 1 일 때)
System.out.println(matcher.group(1));
// hello (count = 0 일 때) hi (count = 1 일 때)
System.out.println(matcher.group(2));
// 987 (count = 0 일 때) 66 (count = 1 일 때)
count++;
}
String something = "hello987*-;hi66";
Pattern pattern = Pattern.compile("([a-z]+)([0-9]+)");
Matcher matcher = pattern.matcher(something);
int count = 0;
while(matcher.find()){
System.out.println(matcher.start());
// 0 (count = 0 일 때) 11 (count = 1 일 때)
System.out.println(matcher.start(0));
// 0 (count = 0 일 때) 11 (count = 1 일 때)
System.out.println(matcher.start(1));
// 0 (count = 0 일 때) 11 (count = 1 일 때)
System.out.println(matcher.start(2));
// 5 (count = 0 일 때) 13 (count = 1 일 때)
count++;
}