요즘 주말에 코딩테스트 문제 풀면서 공부를 하고 있는데 정규식에 관한 문제에 많이 부족한 것 같아서
정리 하면서 공부하면 좋을 것 같아서 적게 되었다.
가장 먼저 정규 표헌식이 무엇일까부터 알아보자
문자열을 대상으로 패턴 매칭 기능을 제공한다.
패턴 매칭 기능 - 특정 패턴과 일치하는 문자열을 검색하거나 추출 또는 치환할 수 있는 기능
내가 문제를 풀면서 해당 문자열에서 특정 문자를 다른 문자로 치환하는 문제를
반복문과 조건문을 통해서 풀었는데 정규 표현식으로 풀면 되게 쉽고 알면 좋을 것 같다는 생각이 들었다.
정규 표현식은 패턴과 플래그를 가지고 있다.
/패턴(pattern)/플래그(flag)
예제로 알아보자
const target = "Is this yours?";
const regexp = /is/i;
regexp.test(target) // true
test
메서드는 target
문자열에 대하여 정규 표헌식 regexp
의 패턴을 검색하여 불리언 값으로 반환
그럼 메서드와 플래그에 대해서 알아보자
패턴 검사에서는 크게 두가지로 나뉜다.
const regExp = new RegExp("a");
console.log(regExp.test("abc")); // true
test
메서드를 통하여 해당 문자열에서 "a"가 포함되어 있는지에 대해 검사한다.
const regExp = new RegExp("ab | cd");
console.log(regExp.test("abc")); // true
console.log(regExp.test("cde")); // true
const regExp = /ab.*cd/;
console.log(regExp.test("abc")); // false
console.log(regExp.test("abcd")); // true
console.log(regExp.test("cde")); // false
정규 표현식에서 |
는 or을 나타내고, .*
는 and를 나타낸다.
const regExp = new RegExp("a");
const str = "abc";
const result = regExp.exec(str);
console.log(result); // ["a", 0, 1]
str
문자열에서 "a"가 포함되어 있는지 있으면 다음과 같은 결과를 반환한다.
str
에서 idx 0에서 1까지 일치한다는 것
const regExp = new RegExp("a", "b");
const str = "abc";
const result = regExp.replace(str, "b");
console.log(result); // "bbc"
str
문자열에서 "a"가 포함되어 있으면 "a" -> "b"로 대체되어 반환한다.const regExp = new RegExp(",");
const str = "a,b,c";
const result = regExp.split(str);
console.log(result); // ["a", "b", "c"]
,
를 찾는다.,
를 기준으로 분할을 한다.split
을 통하여 배열로 반환 된다.플래그 | 의미 | 설명 |
---|---|---|
i | Ignore case | 대소문자를 구별하지 않고 패턴을 검색한다. |
g | Gloval | 대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색한다. |
m | Multi line | 문자열의 행이 바뀌더라도 패턴 검색을 계속한다. |
function solution(myString, pat) {
const regExp = new RegExp(pat, 'i');
return regExp.test(myString) ? 1 : 0;
}
function solution(myString) {
let answer = [];
answer = myString.split('x').filter(Boolean);
return answer.sort();
}
filter(Boolean)
을 사용하면 해당 분자가 빈 문자이면 포함하지 않는다.
function solution(strArr) {
var answer = [];
const regExp = /.*ad.*/;
for (let i = 0; i < strArr.length; i++) {
if (!regExp.test(strArr[i])) {
answer.push(strArr[i]);
}
}
return answer;
}
/.*STR.*/
을 사용하게 되면 해당 문자열에서 STR이 포함되어 있는지에 대한 검사를 한다.