LazowskiAnton · Extensions

RegexSmith

정규식을 작성한 바로 그 자리에서 설명하고 테스트합니다. C#에서 패턴에 마우스를 올리면 각 부분이 쉬운 말로 한 줄씩, 그룹은 색으로, 일치하는 문자열과 함께 표시됩니다. 멈출 수 있는 패턴에는 밑줄이 그어집니다. RegexSmith 테스터에서 직접 만든 샘플로 시험해 보고 클릭 한 번으로 패턴을 코드에 다시 쓸 수 있습니다.

무료 · Visual Studio 2022 및 2026 · UI 14개 언어 · 원격 분석 없음

RegexSmith를 쓰는 이유

[GeneratedRegex] 패턴 위의 호버 카드: 그룹이 색으로 구분된 패턴, 각 부분을 쉬운 말로 설명하는 줄, 일치하는 샘플과 일치하지 않는 샘플 하나, 그리고 상태 ✓ 안전

문법 강의가 아닌 쉬운 말

^(?<year>\d{4})-(?<id>\d{1,5})$는 ‘텍스트의 시작’, ‘숫자 정확히 4개’, ‘숫자 1~5개’가 됩니다 — 부분마다 한 줄씩, 속한 그룹 아래에 중첩되며, 그룹마다 고유한 색이 있습니다.

실제 엔진으로 확인

카드의 샘플과 테스터의 모든 결과는 호출의 옵션을 그대로 사용해 .NET 정규식 엔진 자체에서 나옵니다. 보이는 그대로 앱이 동작합니다.

멈출 수 있는 패턴

([a-z0-9]+\.?)+는 무해해 보이지만, 거의 일치하는 긴 문자열에서 요청을 멈추게 할 수 있습니다. RegexSmith는 이런 반복에 밑줄을 긋고 Ctrl+.로 수정합니다.

조건 없는 무료

구독, ‘Pro’ 버전, 데이터 수집이 없고 출력 창이나 시작 시 메시지도 없습니다. 패턴과 샘플은 사용자의 컴퓨터에 남습니다. 부탁드리는 것은 단 하나, 어느 정도 사용해 보신 뒤 Marketplace에 평가를 남겨 주시는 것뿐입니다. Visual Studio 2022 및 2026, x64 및 ARM64에서 작동합니다.

기능

호버 카드

패턴 문자열에 마우스를 올리면 Visual Studio의 일반 도구 설명에 RegexSmith 카드가 추가됩니다. 패턴의 의미, 무엇과 일치하는지, 안전한지를 알려 줍니다.

호버 카드: 종류와 옵션이 있는 머리글, 그룹이 색으로 구분된 패턴, 그룹 아래에 중첩된 부분별 줄, 샘플, 패턴 테스트 버튼

작동하는 위치

C# 파일에서 다음의 패턴 위:

일반 문자열, 축자 문자열(@"…"), 원시 문자열("""…""")은 컴파일러와 같은 방식으로 읽히므로 "\\d"와 @"\d"는 같은 패턴입니다.

카드에 표시되는 내용

화면 표시의미
RegexSmith · .NET 정규식 · IgnoreCase패턴의 종류와 호출에서 읽은 옵션, 그리고 오른쪽에 상태.
패턴각 캡처 그룹의 괄호는 그 색으로, 안쪽은 그 색의 밑줄로 표시됩니다. 텍스트는 테마 색을 유지하므로 읽기 쉽습니다.
숫자 정확히 4개부분마다 쉬운 말로 한 줄 — ‘텍스트의 시작’, ‘다음 텍스트 중 하나: “jpg”, “png”’, ‘숫자 1~5개’ — 속한 그룹 아래에 중첩됩니다. 아주 긴 패턴은 … N개 더로 끝납니다.
그룹 태그각 그룹의 이름이나 번호를 그 색의 태그로 표시합니다 — 패턴과 코드 아래의 색과 같습니다.
✓ 일치: … ✗ 불일치: …일치하는 문자열 2개와 일치하지 않는 문자열 1개로, 패턴으로 만들어 실제 .NET 엔진으로 확인합니다. 공백은 흐린 점으로 표시됩니다.
▶ 패턴 테스트…RegexSmith 테스터에서 패턴을 엽니다.

상태

화면 표시의미
✓ 안전.NET이 패턴을 허용하고, 그 안에 치명적인 역추적을 일으킬 수 있는 부분이 없습니다.
⚠ 중단될 수 있음거의 일치하는 긴 입력에서 어떤 반복이 지수 시간이 걸릴 수 있습니다. 카드에 그 종류(RX001)와 Ctrl+.에서 수정을 제공한다는 내용이 표시됩니다.
✕ 잘못됨엔진이 패턴을 거부합니다. 카드에 엔진의 메시지가 표시됩니다: .NET에서 이 패턴을 허용하지 않습니다: …

‘안전’은 딱 그 의미뿐입니다: .NET이 패턴을 허용하고 멈출 수 없다는 것. 의도한 대상과 일치한다는 뜻은 아닙니다 — 그것을 확인하는 것이 샘플과 테스터입니다.

그룹 밑줄

패턴의 모든 캡처 그룹에 코드 안에서 바로 그 색의 가는 선이 그어집니다 — 카드와 같은 색입니다. 그룹이 다섯 개인 긴 패턴도 한눈에 읽힙니다: 어느 부분이 연도이고 어느 부분이 ID인지.

다른 그룹 안의 그룹은 조금 더 아래에 표시되므로 두 선이 모두 보입니다. 색은 연어색, 초록, 파랑, 보라, 호박색, 청록 순서로 반복됩니다.

밑줄은 설정에서 끌 수 있습니다: 캡처 그룹에 밑줄 표시.

멈출 수 있는 패턴

어떤 패턴은 거의 일치하는 긴 문자열에서 지수 시간이 걸립니다 — 정규식이 웹 요청을 멈추게 하는 전형적인 경우입니다. RegexSmith는 이런 패턴을 형태로 찾아내 반복 아래에 경고 물결선을 표시합니다. 마우스를 올리면 이유가 나옵니다.

([a-z0-9]+\.?)+ 아래의 RX001 물결선, 열린 Ctrl+. 메뉴, 수정 미리 보기: 취소선이 그어진 이전 패턴과 원자 그룹을 사용한 새 패턴

밑줄이 그어지는 대상(RX001)

원자 그룹이나 전방·후방 탐색 안에서는 해당하지 않으며, RegexOptions.NonBacktracking에서는 절대 표시되지 않습니다 — 그곳에서는 일어날 수 없기 때문입니다.

Ctrl+.의 수정

캐럿을 물결선에 두고 Ctrl+.를 누르세요 — 각 수정에 미리 보기가 표시됩니다: 변경 전(취소선)과 변경 후의 패턴.

수정하는 일
내부 반복을 원자성으로 만들기: (?>…)내부 반복을 (?>…)로 감쌉니다. 일치하는 문자열은 같고, 반복을 여러 방식으로 나눌 수 없게 됩니다.
RegexOptions.NonBacktracking 사용 (.NET 7+)호출에 옵션을 추가합니다. 모든 입력에서 선형 시간이며 .NET 7 이상이 필요합니다. 패턴이 허용할 때만 제공됩니다 — 역참조, 전방·후방 탐색, 원자 그룹이나 균형 그룹, 조건식이 없어야 합니다.
RegexSmith에서 이 패턴 테스트테스터에서 패턴을 엽니다 — 위험한 패턴뿐 아니라 모든 패턴 위에서 제공됩니다.

RX001은 설정(편집기 힌트)이나 도구 설명의 이 종류의 힌트 표시 안 함으로 끌 수 있습니다. Ctrl+. 수정은 그대로 남습니다.

테스터

RegexSmith 테스터는 찾기 결과 옆에 도킹되어 열립니다. 패턴은 코드에서 가져오며 코드와 연결된 상태로 유지됩니다: 직접 만든 샘플로 시험하고, 바꾸고, 다시 쓰세요.

RegexSmith 테스터: 소스 링크, 패턴, 상태 줄, 옵션 칩, 기대값과 강조 표시된 그룹이 있는 샘플, 빨간색의 잘못된 행, 그룹 표, 버튼

여는 방법

패턴과 옵션

맨 위에는 패턴의 파일과 줄이 있으며, 클릭하면 그곳으로 이동합니다. 그 아래에는 패턴 상자, 상태 줄(✓ 안전, ⚠ 중단될 수 있음 또는 엔진 오류, 이어서 M개 중 N개 예상대로 · ms), 옵션 칩이 있습니다: IgnoreCase, Multiline, Singleline, IgnorePatternWhitespace, ExplicitCapture, RightToLeft, CultureInvariant. 변경할 때마다 즉시 다시 실행됩니다.

샘플과 기대값

처음에는 카드의 샘플이 들어 있습니다: 일치해야 하는 것 2개와 일치하지 않아야 하는 것 1개. 새 샘플은 샘플을 추가하고 Enter 키를 누르세요…에 입력합니다. 샘플을 클릭하면 편집할 수 있고, ✕를 누르면 제거됩니다. 각 샘플 앞의 표시는 그 샘플이 어떻게 되어야 하는지 나타내며, 클릭해서 바꿀 수 있습니다:

화면 표시의미
✓일치해야 함
✗일치하지 않아야 함
–기대값 없음, 표시만

반대로 동작하는 샘플은 빨간색이 됩니다 — ✗ 일치 또는 ✗ 불일치 — 이렇게 샘플은 패턴의 작은 명세가 됩니다. 일치 부분은 색으로 칠해지고, 그룹은 각 색으로 밑줄이 그어지며, 공백은 점으로 표시됩니다. 1초를 넘는 실행은 ⏱ 너무 느림으로 중단됩니다.

선택한 샘플의 그룹에는 선택한 샘플의 모든 일치가 나열됩니다: 전체 일치, 그다음 각 그룹의 값과 위치(참여하지 않은 경우 캡처되지 않음).

바꾸기

바꾸기 탭에는 대체 문자열 상자가 추가되고 — $1, ${name}, $는 $$ — Regex.Replace와 같은 방식으로 각 샘플의 결과가 표시됩니다.

복사, 되돌리기, 적용

단위 테스트로 복사는 샘플을 담은 xUnit, NUnit 또는 MSTest용 테스트를 클립보드에 복사합니다 — 명세가 테스트 프로젝트로 옮겨 갑니다.

되돌리기는 코드의 패턴과 옵션으로 돌아갑니다. 샘플은 그대로 남습니다.

코드에 적용은 패턴을 원래와 같은 종류의 리터럴(일반, 축자, 원시)로 옵션과 함께 다시 씁니다 — 실행 취소 한 번으로 되돌릴 수 있습니다. 테스터가 연 뒤에 그 코드가 바뀌었다면 아무것도 쓰지 않습니다: 패턴에서 테스터를 다시 여세요.

샘플은 패턴별, 솔루션별로 %LocalAppData%\RegexSmith\samples에 기억되므로 다음에도 그대로 있습니다. 리포지토리에는 아무것도 들어가지 않습니다.

설정

도구 › 옵션 › SmithWorks › RegexSmith. 모든 옵션에 하는 일을 알려 주는 짧은 설명이 있습니다.

옵션기본값
마우스를 올리면 패턴 설명켜짐
캡처 그룹에 밑줄 표시켜짐
RX001 치명적인 역추적켜짐
Marketplace 평가 요청켜짐

아래쪽에는 기본값으로 다시 설정, 설명서, Marketplace에서 평가, 피드백 보내기가 있습니다.

설정은 %LocalAppData%\RegexSmith에 저장됩니다.

RegexSmith 옵션 페이지
옵션 페이지.

자주 묻는 질문

RegexSmith가 데이터를 보내나요?

아니요. 패턴은 열려 있는 문서에서 읽어 사용자의 컴퓨터에서 실행되며, 샘플은 %LocalAppData%\RegexSmith에 보관됩니다. 네트워크 요청도, 원격 분석도 없습니다.

카드에 ‘✓ 안전’이라고 나옵니다. 패턴이 맞는 건가요?

꼭 그렇지는 않습니다. ‘안전’은 .NET이 패턴을 허용하고 그 안의 어떤 반복도 치명적인 역추적을 일으킬 수 없다는 뜻입니다. 의도한 대상과 일치하는지는 샘플이 보여 줘야 합니다: 테스터에서 샘플에 ✓ 또는 ✗를 표시하세요.

제 패턴 위에 카드가 나타나지 않는 이유는 무엇인가요?

카드는 RegexSmith가 패턴임을 알 수 있는 문자열 리터럴 위에 나타납니다: new Regex, Regex 정적 메서드, [GeneratedRegex] 또는 [RegularExpression]의 인수, 또는 그곳에서 사용되는 같은 파일의 상수입니다. 런타임에 만들어지는 패턴(연결되거나 설정에서 읽어 오는 패턴)은 읽을 수 없습니다. 설정의 마우스를 올리면 패턴 설명도 확인하세요.

어떤 정규식 엔진을 사용하나요?

Visual Studio 자체가 실행되는 .NET 정규식 엔진을 호출의 옵션과 함께 사용합니다. RegexOptions.NonBacktracking(.NET 7+)도 호출에서 읽어 옵니다. 이 경우 샘플은 일반 엔진에서 실행되지만, 어느 쪽이든 일치하는 문자열은 같습니다.

코드에 적용을 눌렀는데 아무 일도 일어나지 않았습니다.

테스터가 연 뒤에 패턴의 코드가 바뀌었기 때문에, RegexSmith는 더 이상 패턴이 없을 수도 있는 곳에 쓰지 않습니다 — 테스터의 버튼 아래에 그렇게 표시됩니다. 패턴에서 테스터를 다시 여세요. 코드에 옵션을 넣을 자리가 없는 경우([RegularExpression]는 옵션을 받지 않음) 패턴만 쓰고 옵션은 쓰지 않습니다.

VB.NET, JavaScript, TypeScript에서도 작동하나요?

1.0에서는 아닙니다: C#만 지원합니다. 다른 언어는 다른 엔진을 사용합니다. 필요하다면 Feedback 리포지토리에 요청해 주세요.

문제를 보고하거나 기능을 제안하려면 어디로 가야 하나요?

GitHub의 Feedback 리포지토리에 이슈를 등록하세요. 버그와 아이디어를 위한 양식이 있습니다(비공개 이름은 바꿔 주세요). Marketplace의 Q&A 탭을 이용할 수도 있습니다.

변경 내역

1.0.1

1.0.0