생각보다 짧은 시간안에 공부할 수 있었다. 주말로 미뤄두긴 했지만, 평일에도 한번 봤어서, 시간을 들여서 공부했더니 금방 이해가 되었다.
하지만 JavaScript처럼 활용방안이 무궁무진해서, 내가 원하는 정규표현식을 빠르게 작성하려면, 더 많은 연습이 필요할 것이다.
드림코딩 by 엘리 "정규표현식"으로 공부하고 정규표현식 연습으로 연습해보면 많은 도움이 된다. 그리고 이 블로깅은 MDN regex를 참고했다.
let re = /ab?/
let re = new RegExp("ab?");
이렇게 두 가지 방법이 있다.
원하는 정보를 찾아서 출력하는 메서드다.
let re = /h/;
re.exec('helloworld');
// 출력 값: ["h", index: 0, input: "helloworld", groups: undefined]
이렇게 찾고자하는 문자열이 있으면 배열로 출력하고, 없으면 null을 출력한다.
찾고자 하는 문자열이 있으면 true 없으면 false 값을 출력한다.
let re = /z/;
re.test('helloworld');
//출력 값: false;
exec()와 같은 기능을 하지만 정규표현식과 문자열의 위치가 바뀌었다고 생각하면 된다.
let re = /h/;
'helloworld'.match(re);
//출력 값: ["h", index: 0, input: "helloworld", groups: undefined]
두 번째 인자를 어떻게 바꿀건지를 넣으면 찾고자 하는 대상을 검색하서 바꾼 후 출력한다. 단, 원본은 바뀌지 않는다.
let re = /a/;
let alp = 'abcabc'
alp.replace(re, 'HI');
//출력 값: "HIbcabc"
정규표현식을 인자로 받아 첫 번째로 일치하는 위치를 출력한다. 일치하는 문자열이 없으면 -1을 출력한다.
"HelloWorld".search(/Hello/); // 0
"HelloWorld".search(/hello/); // -1
"HelloWorld".search(/World/); // 5
6가지 종류가 있다. 그중 가장 자주 사용되는 3개는 아래와 같다.
Flag | 설명 |
---|---|
g | 전역 검색 |
i | 대소문자 구분 없는 검색 |
m | 다중행 검색 |
만약 정규표현식에 flag를 넣고 싶으면 아래와 같이 작성하면 된다.
let re = /pattern/flags;
만약 pattern을 전역검색을 하면서 다중행 검색을 하고 싶으면
let re = /pattern/gm;
이런 식으로 여러가지 flag를 동시에 쓸 수도 있다.
문법들은 아래 github 주소가 정리가 너무 잘되있어서 아래 주소에서 참조하길 바란다.
regex 문법 정리