Regular Expression

정규표현식이란?

특정한 패턴을 갖는 문자열을 검사하기 위해 사용되는 패턴식. 예를들어, [aaa, abc,aba] 는 모두 a로 시작하는 문자열들이며, 이러한 문자열을 검사하거나 필터링 하기 위해 정규표현식 을 이용하여 패턴검사를 할 수 있다.

정규표현식 규칙-기본

기호 설명 패턴
. 임의의 앞에 한 글자 a.b -> abc, azc, afb
* * 바로 앞의 문자가 없거나 한 개 이상 a*b -> b, ab, aaab
+ + 바로 앞의 문자가 최소한 한 개 이상 a+b -> ab, aab, aaaab
? ? 바로 앞의 문자가 없거나 한 개 존재 a?b -> b, ab, cb, zb
^ ^뒤의 문자열과 같은 문자열로 시작하는 경우 ^ab -> ab, abc,abcde
$ $앞의 문자열과 같은 문자열로 끝나는 경우 ab$ -> ab, sab, weab
[] []안의 문자열 중 하나 [a-z],[0-9],[a-zA-Z]
{} {} 앞의 문자열 갯수 a{1-3}b -> ab, aab, aaab
() () 안의 문자는 그룹으로 인식 a(bc){2} -> abcbc
\ OR 연산 a(b\ c)d -> abc, acd
[[:alpha:]] 알파벳 [a-zA-Z]
[[:alnum:]] 알파벳과 숫자 [a-zA-Z0-9]
[[:digit:]] 숫자 [0-9]
[[:space:]] 공백
[[:punct:]] 구두점

정규표현식 예제

@gmail.com 으로 끝나는 문자열의 이름 찾기

import java.util.*;
import java.util.regex.*;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        ArrayList<String> list = new ArrayList<String>();
        String emailRegEx = ".+@gmail\\.com";
        Pattern p = Pattern.compile(emailRegEx);
        for(int i =0; i<n; i++){
            String name = sc.next();
            String email =sc.next();

            Matcher m = p.matcher(email);
            if(m.find()){
                list.add(name);
            }
        }

        Collections.sort(list);
        for(String s : list){
            System.out.println(s);
        }
    }
}

results matching ""

    No results matching ""