SheepDev

텍스트·정규식

정규식이 원하는 부분만 찾는지 확인하기

사용할 도구

원하는 값 하나를 찾으면 정규식이 완성된 듯하지만 비슷한 값을 잘못 잡거나 특이한 행을 놓치는 실패가 더 어렵습니다. 처음부터 복잡한 식 대신 짧은 대상과 명확한 기대값으로 시작해 조건을 하나씩 더하세요.

가상 주문 ID를 사용합니다. 도구는 JavaScript 정규식이며 패턴·플래그를 따로 입력합니다. 민감한 로그 전에 작은 예로 전체 일치·캡처 그룹·치환 결과를 구분해 보세요.

원하는 두 예와 제외할 두 예 준비

대상 텍스트
order-104
order-205
preorder-306
order-407x
처음 패턴: 양끝 / 없음
order-([0-9]+)

gm 플래그에서는 네 곳이 맞습니다. preorder-306 안에 order-306, order-407x 앞에 order-407이 있기 때문입니다. 원하는 두 결과를 포함하는 것만으로는 부족하며 행 전체가 주문 ID여야 한다는 조건이 빠졌습니다.

행 전체라면 시작과 끝을 정하기

행 전체 패턴, 플래그 gm
^order-([0-9]+)$

^와 $를 더하고 gm을 쓰면 order-104·order-205 두 건입니다. m은 앵커를 각 행 경계로 해석합니다. m 없이 g만 쓰면 네 행 전체가 주문 ID 하나가 아니므로 맞지 않습니다. 전역 일치와 여러 행 앵커는 역할이 다릅니다.

현재 SheepDev는 일치 목록을 위해 내부적으로 g를 보충하므로 이를 빼도 첫 일치만 시험하지 않습니다. 대상 코드가 첫 건만 처리한다면 호출 방식도 별도 검증하세요. 같은 패턴도 API·플래그에 따라 결과가 다릅니다.

전체 일치와 추출한 숫자 구분

([0-9]+) 괄호는 숫자를 캡처합니다. 전체 일치는 order-104, 그룹 1은 104입니다. 특정 값 대신 다른 ID에도 적용됩니다. +는 숫자 하나 이상이므로 order-만 있으면 실패합니다. 빈 숫자를 허용할지는 별도 명세입니다.

이 식은 전각 숫자·부호·자리 구분자를 받지 않습니다. order-012를 허용하려면 조건과 시험을 추가하세요. 캡처한 001도 자동으로 숫자 1로 바꾸면 안 될 수 있습니다. 후속 처리에서 ID 의미를 보존하세요.

치환에서는 맞지 않은 행이 남습니다

치환 문자열
ID:$1
앵커 패턴과 gm의 치환 결과
ID:104
ID:205
preorder-306
order-407x

$1은 첫 캡처 그룹을 넣습니다. 맞은 두 행만 ID:104·ID:205가 되고 나머지는 남습니다. 캡처 값만 필요한지 원문 일부를 고칠지 구분하세요. 치환 결과를 추출 목록으로 보면 제외한 행이 섞였다고 오해합니다.

캡처 괄호를 추가하면 그룹 번호가 바뀔 수 있습니다. 식을 고친 뒤 치환 참조도 다시 읽으세요. 치환 문자열에도 특수 문법이 있습니다. 큰 입력 전에 일치·불일치·거의 빈 행을 시험하세요.

패턴 입력란과 코드 문자열은 다릅니다

패턴 본문만 넣고 /로 감싸거나 gm을 붙이지 마세요. 플래그는 별도입니다. 코드 문자열에는 역슬래시 이스케이프 한 층이 더 필요할 수 있습니다. 화면에서 된 식이 코드에서 안 되면 정규식과 이를 감싼 문자열 문법을 분리해 확인하세요.

다른 언어·DB의 정규식 방언은 다를 수 있습니다. 여기서 성공해도 이식 보장은 아닙니다. 대상 플래그·Unicode·문법·치환 그룹 참조를 확인하고 같은 성공·실패 예를 다시 실행하세요.

시간 초과는 일치 없음이 아닙니다

조금 긴 입력만으로 처리량이 급증하는 식도 있습니다. 도구는 Worker에서 실행하고 약 1초에 중단합니다. 시간 초과는 미완료이지 불일치가 아닙니다. 짧은 성공 예뿐 아니라 긴 실패 예도 시험하세요.

대상·패턴 크기는 제한되며 일치 목록은 최대 5,000건입니다. 꽉 찬 목록을 전체 건수로 보지 마세요. 운영 검증·로그 집계에는 자체 제한과 실패 정책이 필요합니다. 식을 복사해도 이 도구의 시간 제한이 따라가지는 않습니다.

성공 예뿐 아니라 비슷한 실패 예도 추가하기

주문 번호 하나를 추출했다고 식이 완성된 것은 아닙니다. 앞에 다른 문자, 한 자리 부족한 숫자, 뒤에 붙은 문자를 추가해 보세요. 부분 일치는 추출에는 맞아도 전체 줄 검증에는 틀릴 수 있습니다. 일치 개수뿐 아니라 강조된 범위를 보고 부분 문자열 추출과 전체 입력 검증을 구별하세요.

숫자 표현에도 전제가 있습니다. JavaScript의 일반 \d는 전각 123을 자동으로 ASCII 숫자처럼 취급하지 않습니다. 입력을 정규화할지 다른 문자 집합을 허용할지는 데이터 규칙으로 정해야 합니다. 대소문자 무시 플래그도 ID가 원래 대소문자를 구분하지 않는다는 증거는 아닙니다. 예제를 통과시키려고 규칙을 완화하지 말고 허용 입력에 식을 맞추세요.

정상 예와 반례를 애플리케이션 테스트에도 함께 옮기세요. 다른 정규식 엔진에서는 플래그, 그룹, 줄바꿈, 치환 문법을 다시 확인해야 합니다. 이 화면에서 1초 안에 끝났다고 모든 길이와 환경에서 빠르다는 보장은 없습니다. 긴 불일치 입력도 시험하고 시간 초과를 정상적인 빈 추출 결과로 처리하지 마세요.

참고 자료

사용할 도구

가이드 →