무엇을 하나
- 식을 이 브라우저의 JavaScript 정규식 엔진(플래그 없음, 또는
i)으로 줄마다 돌려 일치한 부분을 강조합니다. - 같은 식을
grep -E(GNU 의 POSIX ERE)와grep -P(PCRE2)가 어떻게 읽는지는 흉내 내지 않고 규칙표로 진단합니다. 식의 모든 조각이 「셋 다 같다」고 확인된 것일 때만 「JavaScript 와 같은 줄」이라고 하고, 다르게 읽히는 조각이 있으면 그 조각과 이유를, 모르는 조각이 있으면 「확인 불가」를 보입니다. - 비 ASCII 글자가 있는 줄은
\w·.· 범위 ·-i가 엔진마다 다를 수 있어 그 줄만?로 둡니다.
예시
| 식 | JavaScript | grep -E | grep -P |
|---|---|---|---|
\d+ | 숫자 | 글자 d 가 하나 이상 — 다름 | 숫자 — 같음 |
[[:digit:]] | [ : d i g t 중 하나 다음 ] | 숫자 | 숫자 |
(?<=GET )/\S+ | 뒤보기 | 뒤보기 없음 — 다름 | 같음 |
a{,2} | 글자 a{,2} | a 0~2번 | 10.42 는 글자, 10.43 부터 0~2번 |
x(ab)+?y | ab 가 한 번 이상 | (ab)+ 가 「있어도 없어도 됨」이 되어 xy 도 걸림 | 같음 |
\y | 글자 y | 글자 y | 오류 unrecognized character follows \ |
어떻게 확인했나
공개 전에 식 95개를 63줄짜리 시험 텍스트(숫자 · 탭 · 역슬래시 · 중괄호 · é · ü · 이모지 같은 비 ASCII 포함)에 돌려, 도구의 판정 179건을 서버의 GNU grep 3.11(PCRE2 10.42, LC_ALL=C.UTF-8)과 대조해 모두 맞았습니다. 「같다」는 줄마다 걸림이 일치, 「다르다」는 실제로 걸리는 줄이 달라짐, 「오류」는 grep 종료 코드 2 를 뜻합니다. 「확인 불가」 11건은 맞고 틀림을 세지 않았습니다. JavaScript 결과는 node 의 RegExp 와 95/95 같았습니다.
흔한 실수
grep -E '\d'— GNU grep -E 에는\d가 없어 글자d를 찾습니다.[0-9]나[[:digit:]]를 씁니다.grep -E '\t'— 탭이 아니라 글자t입니다. bash 에서는grep -P '\t'나grep $'\t'를 씁니다.- JavaScript 에
[[:space:]]를 넣기 — 오류 없이 엉뚱한 글자 집합이 됩니다. .*?로 「최소 일치」를 기대하고grep -E를 쓰기 — ERE 에는 게으른 수량자가 없습니다.
자주 묻는 것
grep -P 결과가 이 도구와 다를 수 있나요?
PCRE2 버전에 따라 다른 문법이 있습니다({,n} · 가변 길이 뒤보기). 이 도구는 GNU grep 3.11 + PCRE2 10.42 에서 확인한 규칙만 「같다」고 하고, 버전에 달린 문법은 「확인 불가」로 둡니다. grep -V 와 pcre2test -C 로 설치된 버전을 볼 수 있습니다.
왜 grep 결과를 직접 계산해 보여 주지 않나요?
브라우저 안에서 ERE · PCRE 를 비슷하게 흉내 내면 맞는 것처럼 보이는 틀린 결과가 나올 수 있습니다. 그래서 실제 엔진이 있는 JavaScript 만 돌리고, grep 쪽은 「JavaScript 와 같다」를 확인할 수 있을 때만 줄 결과를 보입니다.
입력한 식과 텍스트가 서버로 가나요?
아니요. 계산은 모두 브라우저 안에서 하고, 입력값은 주소창에도 쓰지 않습니다. 이 사이트가 쓰는 방문 통계와 광고에도 넘기지 않습니다. 자세한 것은 개인정보 처리 안내에 있습니다.