- 출처 : [인사이트] 손에 잡히는 정규 표현식 -
1. 자바스크립트
자바스크립트 1.x 에서는 String 과 RegEx 객체를 다음 메서드로 처리하여 정규표현식을 구현한다.
* RegEx 객체의 exec 메서드 - 일치하는 부분을 찾는다.
* String 객체의 match 메서드 - 문자열을 찾는다.
* String 객체의 replace 메서드 - 치환명령을 수행한다.
* String 객체의 search 메서드 - 문자열에서 일치하는 부분이 있는지 검사한다.
* String 객체의 split 메서드 - 문자열 하나를 여러 개로 나눈다.
* RegEx 객체의 test 메서드 - 주어진 문자열이 일치하는지 검사한다.
자바스크립트에서 지원하는 정규표현식은 펄을 기준으로 삼았지만, 다음 사항들은 조심해야 한다.
* 자바스크립트는 플래그(flag)를 사용해 전역 대소문자를 구별해 검색한다. g 로 전역을 설정하고, i 는 대소문자를 구별하지 않고 일치시키며, 이 두 개를 합쳐서 gi로 표시하기도 한다.
* 버전 4 이상의 브라우저에서 지원하는 변경자로, 다중행 문자열을 지원하는 m, 단일행 문자열을 지원하는 s, 정규표현식 안에 포함된 공백을 무시하는 x 지시자가 추가되었다.
* 역참조를 사용할 때, $' 는 일치하는 문자열 앞에 있는 문자열을 모두 반환하고, $` 는 일치하는 문자열 뒤에 오는 문자열을 모두 반환한다. $+ 는 마지막 하위 표현식과 일치한 내용을 반환하며, $& 는 일치한 문자열을 모두 반환한다.
* 자바스크립트에는 RegExp 라는 전역 객체가 있어, 정규 표현식을 실행한 다음에 관련된 정보를 얻어올 수 있다.
* 포직스(POSIX) 문자 클래스는 지원하지 않는다.
* \A 와 \Z 는 지원하지 않는다.
2. 자바
자바 1.4 버전부터 정규 표현식을 지원했다. JRE 이전 버전에서는 정규 표현식을 지원하지 않는다.
정규표현식 검색은 java.util.regex.matcher 클래스와 다음 메서드로 지원한다.
* find() - 문자열에서 패턴과 일치하는 부분이 있는지 찾는다.
* lookingAt() - 문자열이 주어진 패턴으로 시작하는지 일치시켜 본다.
* matches() - 문자열 전체를 주어진 패턴과 일치시켜 본다.
* replaceAll() - 일치하는 부분을 모두 치환한다.
* replaceFirst() - 처음 일치하는 부분만 치환한다.
추가 클래스 메서드를 사용해 더 구체적으로 정규 표현식을 설정할 수 있다.
게다가 java.util.regex.pattern 클래스를 써서 간단한 래퍼 메서드를 사용할 수 있다.
* compile() - 정규 표현식을 패턴으로 컴파일한다.
* flags() - 패턴에 설정되어 있는 일치 플래그를 반환한다.
* matches() - 문자열 전체를 주어진 패턴과 일치시켜 본다.
* pattern() - 만들었던 패턴에서 정규 표현식 부분을 문자열로 반환한다.
* split() - 문자열을 하위 문자열로 나눈다.
썬의 정규 표현식은 펄 구현을 기반으로 지원하지만, 다음 사항들을 유의해야 한다.
* 정규 표현식을 사용하려면 import java.util.regex.* 라는 정규 표현식 패키지를 반드시 포함해야 한다. 이 식은 패키지 전체를 포함하며, 만약 특정 부분만 필요하면 * 대신 해당 클래스 이름을 쓰면 된다.
* 조건 달기는 지원하지 않는다.
* \E, \l, \L, \u, \U 를 이용한 대소문자 변환은 지원하지 않는다.
* \b 를 통한 백스페이스 일치도 지원하지 않는다.
* \z 는 지원하지 않는다.
저도 이 책 보고 있는데요, 혹시
자바에서 치환할때 $1 도 사용이 가능한가요?
저도 잘 모르겠네요 ^^;