자바스크립트의 정규표현식
자바스크립트에서 정규표현식은 크게 두 가지로 나뉘어 진다.
1. 컴파일: 패턴을 찾는 걸 의미
2. 실행: 찾은 패턴(대상)을 어떠한 작업을 할 것인지
컴파일 하는 방법
1. 정규표현식 리터럴
var pattern = /찾고자 하는 문자/;
2. 정규표현식 객체 생성자
var pattern = new RegExp('찾고자 하는 문자');
여기서 RegExp는 regular expression의 약자이다.
var pattern = /a/ 와 var pattern = new RegExp('a') 는 같은 의미이다.
정규표현식을 사용하는 경우
1. 자신이 원하는 정보를 추출하고자 할 때
2. 자신이 원하는 정보가 있는 지 없는 지 테스트 할 때
3. 찾은 정보를 다른 텍스트로 치환할 때
이제, 실제로 정규표현식 패턴을 이용하여 정보를 추출해보자!
ex) var pattern = /a/;
pattern.exec('abcde') --->>> ["a"]
정규표현식 패턴이 담긴 변수에 exec()메소드를 사용하여
'a'를 추출하는 경우이다.
'a'가 존재하므로 'a'가 출력되었지만, 만약 'a'가 없을 경우는 'null'이 리턴된다.
ex) var pattern = /a./;
pattern.exec('abcde') --->>> ["ab"]
'a'뒤에 '.'이 있으므로 'a'뒤에 있는 텍스트가 같이 출력된다.
ex) var pattern = /a/;
pattern.test('abcde') --->>> true
정규표현식 패턴에 담긴 변수에 test()메소드를 사용하여
'a'가 존재하는지 안하는지 판단하는 경우이다.
'a'가 존재하므로 true이고, 만약 없을경우 false를 리턴한다.
ex) var pattern = /a/;
var str = 'abcde';
str.match(pattern) --->>> ["a"]
여기서 match()메소드는 String.match() 구조이다.
RegExp.exec()메소드와 같은 역할을 하고 있다.
ex) var pattern = /a/;
var str = 'abcde';
str.replace(pattern, 'A') --->>> "Abcde"
replace()메소드는 치환하는 메소드이고, String.replace() 구조이다.
첫 번째 인자로 찾고자 하는 패턴을 기입하고, 두 번째 인자로 치환할 문자를 기입
ex) var xg = /a/;
"abcdea".match(xg) --->>> ["a"]
여기서 'a'가 제일 앞과 제일 뒤, 총 2개 이지만 1개만 출력된다.
'g'키워드를 이용할 경우 검색된 모든 결과를 리턴할 수 있다.
var og = /a/g;
"abcdea".match(og) --->>> ["a", "a"]
이와 같이 'a'가 2개 출력된다.
마지막으로, 정규표현식을 이용하여 캡처를 해보자.
여기서 캡처란, 괄호안의 패턴을 마치 변수처럼 재사용할 수 있는 걸 의미.
ex) var pattern = /(\w+)\s(\w+)/;
var str = "coding everybody";
var result = str.replace(pattern, "$2, $1") --->>> everybody, coding
먼저, pattern변수를 보면 \w는 word를 의미한다.
여기서 word는 숫자, 영어 소문자, 영어 대문자, '_'을 가리킨다.
\s는 공백을 가리킨다.
replace()함수를 이용하여 치환을 하는 데, 두 번째 인자 값에 '$'가 있다.
여기서 '$'는 그룹을 의미한다.
즉, $2는 '(\w+)\s(\w+)'에서 두 번째 괄호를 가리키고,
$1는 첫 번째 괄호를 가리킨다.
두 번째 괄호인 'everybody' 먼저 출력되고 쉼표와 공백을 둔 후,
첫 번째 괄호인 coding가 결과로 출력되게 되는 것이다.
2016년 2월 15일 월요일
피드 구독하기:
댓글 (Atom)
결혼이민비자 신청방법(F-6-1 국민의 배우자)
제가 일본인 여자친구와 결혼 후, 한국에 귀국하기 위해 신청한 결혼이민비자에 대하여 작성해보도록 하겠습니다. 필자는 일본에서 근무하고 있었으며, 한국에서의 소득은 없었습니다. 결혼이민비자를 신청한 날짜는 2021-04-21 이며, 사증이 발급된 날짜...
-
MySQL 8.0.21 소스를 컴파일 하여 설치하는 방법에 대해 알아보자. 설치 환경 CentOS 7.6(64 bit) 선행 작업 1. 유저 및 그룹 생성 # 그룹 생성 groupadd mysql # 유저 생성 # options means # -M:...
-
리눅스에서 외부로부터 접속(접근)을 차단해보자. 방법은 두 가지가 있다. 1. route 2. iptables route란, 간단하게 말하면 "구글"에 들어갈 때 경로를 정해주는 역할이라고 정의할 수 있다....
-
MySQL을 이중화 하는 대표적인 MMM과 MHA 차이에 대해서 알아보도록 하자. 가장 큰 차이점은 MMM(Multi-Master Replication Manager For MySQL)는 데이터 정합성이 보장되지 않을 수 있고, MHA(MHA fo...
댓글 없음:
댓글 쓰기