반응형
Alternatives in regular expressions should be grouped when used with anchors
앵커와 함께 사용할 경우 정규 표현식의 대안(alternatives)을 그룹화해야 합니다
정규식에서 앵커 ^와 $는 | 연산자보다 높은 우선 순위를 갖습니다. 따라서 ^alt1|alt2|alt3$와 같은 정규식에서 alt1은 맨 앞에 고정되고 alt3은 맨 끝에 고정되지만 alt2는 고정되지 않습니다. 일반적으로 의도된 동작은 모든 대안(alternatives)들이 양쪽 끝에 고정되는 것입니다. 이를 위해서는 대안에 non-capturing group을 사용해야 합니다.
앵커가 각각 하나의 대안에만 적용되도록 의도된 경우 앵커와 적용되는 부분 주위에 non-capturing group을 추가하면 어떤 부분이 고정되어 있는지 명확하게 만들고 독자가 우선 순위를 오해하거나 변경하는 것을 방지할 수 있습니다. 왜냐하면 그들은 우선순위가 의도되지 않았다고 잘못 가정하기 때문입니다.
Noncompliant Code Example
^a|b|c$
Compliant Solution
^(?:a|b|c)$
^a$|^b$|^c$
// 앵커를 각각 a와 c에만 적용하려는 경우
(?:^a)|b|(?:c$)
반응형