티스토리 뷰
정규표현식(정규식)은 영어로 regular expression 간단히 regex 또는 regexp.
특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어다.
정규표현식을 사용하기 전 용어들 부터 알아보자.
정규표현식에서 사용되는 기호를 meta 문자라고 표현하는데, 표현식에서 내부적으로 특정 의미를 가지는 문자를 말한다.
간단한 예시로 특수 문자를 이용해 정규표현식 패턴을 만들어 보자.
var pattern = \ab*c\;
또는 정규표현식 객체를 사용해서 생성도 가능하다.
var pattern = new RegExp("ab*c");
지금 생성한 패턴은 a 다음 b 가 0번 이상 반복되고(*) 그 뒤에 c 가 붙는 패턴을 의미한다.
"abeaabbbcd" 이 문자열에서 "abbbc"가 패턴과 일치한다.
이렇게 정규표현식으로 만든 패턴을 활용하는 method도 알아보자.
exec |
문자열에서 일치를 위해 검색을 실행하는 RegExp 메소드. 이는 정보를 배열로 반환한다. 일치하지 않으면 null을 반환한다. |
test |
문자열에서 일치를 위해 테스트하는 RegExp 메소드. 이는 true 또는 false를 반환한다. |
match |
문자열에서 일치를 위해 검색을 실행하는 String 메소드. 이는 정보를 배열로 반환하거나 일치가 없으면 null을 반환한다. |
search |
문자열에서 일치를 위해 테스트하는 String 메소드. 일치의 색인, 또는 검색 실패시 -1을 반환한다. |
replace |
문자열에서 일치를 위해 검색을 실행하여 일치된 substring을 대체 substring으로 바꾸는 String 메소드. |
split |
정규 표현식 또는 지정된(fixed) 문자열을 사용하여 문자열을 substring들의 배열로 깨뜨리는 String 메소드. |
한 패턴이 어떤 문자열에서 나온 것인지 알고 싶으면, test나 search 메소드를 사용하자.
만약 더 많은 정보를 원하면(대신 실행이 느림) exec나 match 메소드를 사용하자.
exec 메소드를 사용해보자.
var pattern = /d(b*)d/g;
var array = patter.exec("cdbbdbsbz");
console.log(patter.lastIndex);
//5
이 스크립트에서 매칭이 성공하고 배열을 반환한 뒤 메소드에 맞게 속성을 갱신한다.
정규식 실행결과 메소드
Object |
Property or index |
Description |
pattern |
|
일치된 문자열과 기억된 모든 substring들 |
index |
input 문자열에서의 일치의 색인으로 0 부터 시작한다 |
|
input |
원래의 문자열 |
|
[0] |
최후로 일치된 문자들 |
|
array |
lastIndex |
다음 일치가 시작하는 색인(g 플래그를 사용해야만 설정 가능) |
source |
패턴의 텍스트 |
|
RegExp |
lastMatch |
최후로 일치된 문자들 |
leftContext |
가장 최근 일치에 선행하는 substring |
|
rightContext |
가장 최근 일치를 뒤따르는 substring |
바로 위 코드 var patten = /d(b*)d/g; 에서 g 그리고 표에 있는 g 플래그가 같은 의미인데 마지막으로 플래그 까지 알아보자.
플래그(flag)란 특정 동작을 수행할지 가리키는 1비트 이하의 정보로서 정규표현식에서도 플래그가 사용된다.
Regular expression flags
flag |
Description |
g |
Global을 의미하며 대상 문자열내에 모든 패턴을 검색하는 것을 의미한다. |
i |
case-insensitive. 대/소문자를 구분하지 않고 검색하는 것을 의미한다. |
m |
다중행(multi-line) 검색. |
플래그를 사용하는 방법은 두가지가 있다.
var regexp1 = /pattern/flags;
var regexp2 = new RegExp("pattern", "flags");
참고 페이지
정규표현식 - 위키백과 : https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D
정규식 - JavaScript : https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/%EC%A0%95%EA%B7%9C%EC%8B%9D
정규표현식(Regex) 정리 : http://hamait.tistory.com/342
자바스크립트 정규 표현식 : http://yaku.tistory.com/75
'IT' 카테고리의 다른 글
크롤링, 스크래핑, 파싱 차이 (용어 정리) (0) | 2018.04.16 |
---|---|
[JAVA] 제어자(modifier), 접근제어자(access modifier) (0) | 2018.04.09 |
[JAVA] 추상클래스와 인터페이스의 차이 (0) | 2018.03.28 |
[JAVA] 추상메서드, 추상클래스 (abstract) (0) | 2018.03.22 |
[JAVA] 인터페이스 (0) | 2018.03.18 |