본문으로 바로가기

정규표현식(regular expression)

category 기타 2020. 3. 30. 15:58

정규표현식 이란?


문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '추출'하거나, 

나에게 필요한 정보의 유무를 판단하거나,

찾아낸 정보를 다른 정보로 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다.

 

 

 

정규표현식 생성


컴파일

문자를 치환할 때 문자가 있는지 없는지 필요한 대상을 찾는 것. 

즉, 찾고자 하는 패턴을 만드는 일이다.

 

컴파일을 하기 위해서는 정규표현식 객체를 만들어야한다.

객체를 만드는 방법은 2가지가 있다.

 

1. 정규 표현식 리터럴

var pattern = /a/

 

2. 정규표현식 객체 생성자

var pattern = new RegExp('a');

 

위의 두가지 예시는 문자 a를 찾는 정규표현식 객체의 참조값을 pattern이라는 변수 안에 담은 것이다.

 

 

실행

컴파일 단계로 찾은 대상에 대해 어떤 일을 하는것

 

1. 정규표현식 메서드 실행

exec() 메소드

exec() 메소드는 정규표현식 안에 일치하는 data가 있으면 배열로 리턴한다.

일치하는 data가 없을 경우 null을 리턴한다.

 

test() 메소드

exec() 메소드는 정규표현식 안에 일치하는 data가 있으면 true를 리턴한다.

일치하는 data가 없을 경우 false를 리턴한다.

 

2. 문자열 메소드 실행

match() 메소드

문자열과 비교해서 정규표현식 안에 일치하는 부분이 있다면 배열을 반환하고,

없다면 null을 반환한다.

 

replace() 메소드

문자열과 비교해서 정규표현식과 일치하는 부분이 있다면 해당부분을 지정해놓은 문자로 치환한다.

 

 

 

옵션


정규표현식 옵션에 따라서 검출되는 데이터가 달라진다.

 

i

대소문자를 구분하지 않게 한다.

var xi = /a/;
"Abcde".match(xi); //null

var oi = /a/i;
"Abcde".match(oi) //["A", index: 0, input: "Abcde", groups: undefined]

 

g

g를 붙이면 검색된 모든 결과를 리턴한다.

var xg = /a/;
"abcdea".match(xg); // ["a"]

var og = /a/g;
"abcdea".match(og); // ["a", "a"]

 

 

 

 

캡처


괄호'( )' 로 패턴을 묶어서 그룹을 만들고, 필요한 시점에 원하는 그룹을 재사용하는 것을 '캡쳐'라고 한다.

 

다음은 coding everybody 문자열을 everybody codeing으로 출력하는 것이다.

var pattern = /(\w+)\s(\w+)/;
var str = "coding everybody";
var result = str.replace(pattern, "$2, $1");
console.log(result); //everybody, coding

 

문자열에 

(\w+) : A-Z, a-z, 0-9 사이의 문자가 들어가고,

\s : 그 문자열 뒤에 띄어쓰기(공백)가 있고,

(\w+) : A-Z, a-z, 0-9 사이의 문자가 들어가는 경우

 

replace 메소드를 사용하여 그룹1($1)과 그룹2($2)의 순서를 바꾼다.

 

 

 

 

 

치환


 

 

 

 

 

 

정규 표현식 도구(사이트)


gskinner.com

http://gskinner.com/RegExr/

정규 표현식을 작성하면서 실시간으로 그 결과를 테스트 할 수 있는 도구. 패턴을 저장 할 수 있고, 저장한 패턴을 URL을 통해서 공유 할 수 있다. 또한 다른 사용자들이 공유한 다양한 패턴들도 쉽게 찾아서 이용 할 수 있다.

 

regexper

http://www.regexper.com/

정규 표현식을 시각화해서 보여주는 도구

 

 

 

 

 

출처 https://opentutorials.org/module/532/6580