기타
정규식 정리2
Green-Flamingo
2021. 10. 20. 23:42
탐색(Lookaround)
검색된 문자열 중에 접두사, 접미사를 재탐색하는 방법이다. 이들은 Positive, Negative로 나누어져있으며 Positive는 조건이 일치하면 통과시키고 Negative는 조건이 일치하지 않으면 통과시킨다.
전방 탐색(Lookahead)
검색된 문자열의 접두어를 탐색하는 방법이다.
a(?=b)
: Positve Lookahead, 패턴 a에 일치한 문자들 접미어로 패턴 b에 일치한 문자를 반환한다.a(?!b)
: Negative Lookahead, 패턴 a에 일치한 문자들 중에 접미어로 패턴 b에 일치하지 않은 문자를 반환한다.
const regex1=/\d+(?=s)/g;
const regex2=/\d+(?!s)/g;
const string='1000ms + 2s = 3000ms';
const result1=string.match(regex1);
const result2=string.match(regex2);
console.log(result1); // ['2']
console.log(result2); // ['1000', '3000']
regex1
은 숫자들 중에 s
가 포함된 문자 2s에서 숫자인 2만 반환한다.
regex2
는 숫자들이 포함된 문자중에 꼬릿말로 문자 s
가 없는 숫자인 1000ms와 3000ms중에 숫자인 1000과 3000만 반환해준다.
후방탐색(Lookbehind)
(?≤b)a
: Positive Lookbehind, 패턴a에 일치한 문자들에서 중에 접두어로 패턴b에 일치하는 문자를 반환.(?<!b)a
: Negative Lookbehind, 패턴 a에 일치한 문자들 중에 접두어로 패턴b에 일치하지 않은 문자를 반환한다.
const regex1=/(?<=\d+)[a-z]+/g;
const regex2=/(?<!\d+)[a-z]+/g;
const string='1000ms is 1s';
const result1=string.match(regex1);
const result2=string.match(regex2);
console.log(result1); // ['ms', 's']
console.log(result2); // ['s', 'is']
regex1
은 알파벳 소문자들로 이루어진 단어들 중에 접두사로 숫자가 들어간 문자인 ms
와 s
가 결과로 나온다.
regex2
는 숫자들이 포함된 문자중에 꼬릿말로 문자 s
가 없는 숫자인 1000ms와 3000ms중에 숫자인 1000과 3000만 반환해준다.