티스토리 뷰

Java

Java에서 정규표현식 사용하기

siyoon210 2018. 12. 13. 11:35
반응형

정규표현식

정규 표현식(Regular Expression)은 주어진 문자열 데이터에서 특정한 조건의 문자를 '검색'하는 과정을 처리 할 수 있도록 하는 규칙입니다. 정규표현식은 특정 언어에서만 사용되는 것이 아니라, 대부분의 언어에서 범용적으로 사용됩니다.

예를들어 c[a-z]이라는 정규표현식은 알파벳 c로 시작하고 뒤에 알파벳 a부터 z까지의 문자 중 하나가 오는 문자를 검색합니다.

ex) ca, cb, cc, cd ... cz 라는 문자는 찾습니다.

ex) 하지만 c1 과 같이 다른 문자는 찾지 못합니다.


정규표현식을 작성하는 방법에 대해서는 관련된 도서나 인터넷상의 자료를 이용해서 공부해야 합니다.

Java에서 정규표현식 사용하기

정규표현식을 사용하기 위해서는 Pattern 객체와 Matcher객체를 사용합니다. Pattern객체 compile 메소드에 매개변수로 정규표현식을 넣습니다. 그리고 해당 Pattern 객체 matcher 메소드에 매개변수로 검색하고자 하는 문자데이터를 넣고, Matcher 객체를 생성합니다. Matcher 객체에는 정규표현식과 문자데이터를 비교하는 역할을 합니다.

Pattern p = Pattern.compile(정규표현식); // ex) Pattern.compile(“c[a-z]”);
Matcher m = p.matcher(문자데이터); // ex)  p.matcher("abcdefghijhlmnop");
이제 Matcher의 메소드 matches()나 find()를 사용하여서 일치여부를 Boolean 값으로 받아낼 수 있습니다.
if (m.matches()) {
    System.out.println("matches 됨");
} else if (m.find()) {
    System.out.println("find 됨");
}

matches() vs find()

  • matches() : 주어진 문자데이터 ‘전체’와 정규표현식이 일치하는지 확인하여 true 혹은 false를 반환합니다.
  • find() : 주어진 문자데이터의 내용 중에 정규표현식과 일치하는지 확인하여 true 혹은 false를 반환합니다.

ex) 문자데이터가 “a123b”이고, 정규표현식이 “123” 이라면 matches는 false를 find는 true를 반환한다.

ex) 문자데이터가 “123”이고, 정규표현식이 “123” 이라면 둘 다 true를 반환한다.

반응형
댓글