기타

정규식 정리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은 알파벳 소문자들로 이루어진 단어들 중에 접두사로 숫자가 들어간 문자인 mss가 결과로 나온다.

regex2는 숫자들이 포함된 문자중에 꼬릿말로 문자 s가 없는 숫자인 1000ms와 3000ms중에 숫자인 1000과 3000만 반환해준다.