GrepBoardTools GrepBoard 매뉴얼 ↗ Log ↗

Tools / 텍스트·인코딩

정규식 시험기: JavaScript · grep -E · grep -P

\d+ · (?<=GET )/\S+ 같은 식을 넣고 시험할 줄을 붙여 넣습니다.

입력한 값은 브라우저 안에서만 계산하고 서버로 보내지 않습니다.

예시

JavaScript(이 브라우저)

—

grep -E(POSIX ERE, GNU)

다르게 읽음

grep -P(PCRE2)

JavaScript 와 같은 줄

기준: GNU grep 3.11 + PCRE2 10.42, LC_ALL=C.UTF-8. 「같은 줄」은 걸리는 줄이 같다는 뜻입니다(grep 은 줄을 출력). -o 로 뽑히는 부분은 다를 수 있습니다.

무엇을 하나

  • 식을 이 브라우저의 JavaScript 정규식 엔진(플래그 없음, 또는 i)으로 줄마다 돌려 일치한 부분을 강조합니다.
  • 같은 식을 grep -E(GNU 의 POSIX ERE)와 grep -P(PCRE2)가 어떻게 읽는지는 흉내 내지 않고 규칙표로 진단합니다. 식의 모든 조각이 「셋 다 같다」고 확인된 것일 때만 「JavaScript 와 같은 줄」이라고 하고, 다르게 읽히는 조각이 있으면 그 조각과 이유를, 모르는 조각이 있으면 「확인 불가」를 보입니다.
  • 비 ASCII 글자가 있는 줄은 \w · . · 범위 · -i 가 엔진마다 다를 수 있어 그 줄만 ? 로 둡니다.

예시

식JavaScriptgrep -Egrep -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)+?yab 가 한 번 이상(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 와 같다」를 확인할 수 있을 때만 줄 결과를 보입니다.

입력한 식과 텍스트가 서버로 가나요?

아니요. 계산은 모두 브라우저 안에서 하고, 입력값은 주소창에도 쓰지 않습니다. 이 사이트가 쓰는 방문 통계와 광고에도 넘기지 않습니다. 자세한 것은 개인정보 처리 안내에 있습니다.