본문 바로가기
javascript/javascript

[자바스크립트 정규표현식] 작성하기2 - 문자열에서 특정 문자를 추출

by 알찬 퍼블리셔 2019. 5. 15.
728x90
반응형
let extractStr = "Extract the word 'coding' from this string.";
let codingRegex = /coding/;
let result = extractStr.match(codingRegex);

extractStr에서 

codingRegex의 값인 coding이 있는지 검사해서 있으면 결과값으로 전달한다.

 

result 의 값은 coding 이다.

 


 

그렇다면,

문장에 같은 문자열이 반복적으로 들어있는 경우는 어떻게 추출할까

위에 처럼 그냥 쓸 경우에는 첫번째 요소만 반환된다. 

그러므로 g 를 써줘서 반복되는 모든 요소들을 반환하도록 한다. 

let twinkleStar = "Twinkle, twinkle, twinkle, little star";
let starRegex = /twinkle/g; 
let result = twinkleStar.match(starRegex);

이때 result는  twinkletwinkle 이 된다.

 

그렇다면 

 

2019/05/15 - [javascript] - [자바스크립트 정규식] 정규식 작성하기1 - 문자열이 특정문자를 포함 하는지 검사

 

에서 사용했던 i 를 함께 써본다면

 

대소문자구분없이(i), 반복되는 요소 모두 추출(g)을 한다면 

let twinkleStar = "Twinkle, twinkle, twinkle, little star";
let starRegex = /twinkle/gi; 
let result = twinkleStar.match(starRegex);

result 는 Twinkle,twinkle,twinkle 가 된다. 

 

 


let quoteSample = "Beware of bugs in the above code; I have only proved it correct, not tried it.";
let vowelRegex = /b[aiu]g/;
let result = quoteSample.match(vowelRegex);

b[aiu]g

b로 시작하고 g로 끝나는 3글자, 가운데 글자는 a,i,u중 하나

즉 bag, big, bug가 해당된다..

 

위의 result는 bug로 

quoteSample의 bugs에 있는 bug가 추출된다. 

 

let quoteSample = "Beware of bugs in the above code; I have only proved it correct, not tried it.";
let vowelRegex = /b.g/;
let result = quoteSample.match(vowelRegex); 

가운데 문자가 뭐든 상관 없다면 .을 써준다. 결과는 동일하다. (단 점은 1개의 문자와 매칭된다..) 

 

 


let quoteSample = "The quick brown fox jumps over the lazy dog.";
let alphabetRegex = /[a-z]/gi;
let result = quoteSample.match(alphabetRegex);

a부터까지 z까지 대소문자상관없이 -> 즉 알파벳모두  + g(중복결과 모두 추출) i (대소문자 구분없이)

결과는 

T,h,e,q,u,i,c,k,b,r,o,w,n,f,o,x,j,u,m,p,s,o,v,e,r,t,h,e,l,a,z,y,d,o,g

 

let quoteSample = "Blueberry 3.141592653s are delicious.";
let myRegex = /[a-z0-9]/gi;
let result = quoteSample.match(myRegex); 

a-z 0-9 알파벳 숫자 모두 + g(중복결과 모두 추출) i (대소문자 구분없이) 

결과는

B,l,u,e,b,e,r,r,y,3,1,4,1,5,9,2,6,5,3,s,a,r,e,d,e,l,i,c,i,o,u,s

 

g를 생략한다면 결과는

B만 추출될 것이고,

g와 i를 모두 생략하면 결과는 

l이 추출될 것이다. (B는 대문자이기 때문에 a-z에 포함되지 않는다.)

 

 

728x90
반응형

댓글