Command Palette

Search for a command to run...

Regex 바꾸기: 편집기를 건드리지 않고 정규식으로 찾아 바꾸기

Regex 바꾸기: 편집기를 건드리지 않고 정규식으로 찾아 바꾸기

T
Toolz Team
|Aug 23, 2026|17 최소 읽기

정규병 모음의 일부

제가 이것을 만들게 한 작업은 지루했고,바로 이것이 자동화할 가치가 있는 이유였습니다. 한 클라이언트가 저에게 모든 날짜가 미국식으로 쓰여진 4,000 줄의 수출을 건네주었습니다 01/15/2024그리고 그것이 들어가고 있던 시스템은 ISO를 원했습니다 2024-01-15. 평범한 찾기-바꾸기는 그것을 건드릴 수 없었습니다,왜냐하면 검색할 고정된 문자열이 없었기 때문입니다 - 날짜는 모두 달랐습니다. 그들이 공유한 것은 a 였습니다 모양: 두 자리,슬래시, 두 자리,슬래시, 네 자리. 그것은 정확히 정규식이 일치하는 종류의 것이고,정확히 regex 대체가 한 패스에서 다시 쓰는 종류의 것입니다. 나는 스크래치 도구에 파일을 붙여 하나의 표현식을 썼고,전체 내보내기는 두 번째 아래에 형식을 뒤집었습니다.

그것이 바로 무료 직업입니다 Regex 교체 tool 은 그렇습니다,그리고 이 가이드는 그것을 잘 사용하는 방법의 긴 버전입니다. regex 대체가 실제로 무엇인지,캡처 그룹 백레퍼런스가 텍스트를 삭제하는 대신 재구성하는 방법,모든 특별한 대체 토큰이 무엇을 의미하는지,사람들을 넘어뜨리는 실수 옆에 앉습니다 정규식 테스터 저는 따로 글을 썼습니다 - 테스터는 패턴이 일치하는 것을 알려주고,이 도구는 일치하는 것을 다시 씁니다. 정규식 자체가 여러분에게 새로운 것이라면,the 로 시작하세요 완전한 코딩 도구 가이드 그리고 돌아와.

TL;DR: 정규식 대체는 텍스트를 패턴별로 일치시키고 각 일치 항목을 대체 문자열을 사용하여 다시 작성합니다. 괄호 안에 재사용할 부품을 감싸서 번호가 매겨진 그룹을 만든 다음 대체 항목에서 다음을 참조하여 주십시오 $1, $2등등 - 패턴 (\d{4})-(\d{2})-(\d{2}) 교체와 $3/$2/$1 회전 2024-01-15 안으로 15/01/2024. 켜세요 g 모든 일치 항목을 교체하려면 플래그를 지정하고, 일치 항목을 삭제하려면 대체 항목을 비워 두고 사용합니다 $<name> 명명된 그룹의 경우. The Regex 교체 도구는 브라우저에서 완전히 실행되며 교체 횟수를 실시간으로 표시합니다.

regex 대체란 무엇입니까?

평범한 찾기-바꾸기는 리터럴 텍스트에서 동작한다: 찾고 있는 정확한 단어와 그 자리에 넣을 정확한 단어를 입력한다. 변경하고자 하는 것이 고정된 문자열이 아니라 패턴 - 백 가지 형태 중 어느 하나의 날짜,전화번호, HTML 태그,후행 공백 실행,관습을 따르는 변수 이름 - 인 순간 실패한다. 정규식은 그 패턴을 설명하고,regex 대체는 각 매치를 어떻게 다시 써야 하는지를 말해주는 템플릿과 짝을 이룬다.

메커니즘은 두 개의 반쪽을 가지고 있습니다. The 패턴 는 엔진이 텍스트를 스캔하여 모양이 발생하는 모든 위치를 찾는 정규식입니다. The 교체 는 각 일치 항목에 대체되는 문자열입니다. 가장 간단한 경우 대체는 일반 텍스트이고 모든 일치 항목은 동일한 항목이 됩니다. 예를 들어 탭과 공백의 모든 실행을 단일 공백으로 정규화하는 데 유용합니다. 강력한 경우는 대체 항목이 일치된 부분을 다시 참조하므로 출력은 고정된 상수가 아닌 입력에서 생성됩니다. 이것이 바로 정규식 대체 항목을 무딘 삭제 및 재유형에서 진정한 구조 조정 도구로 바꾸는 것입니다.

후드 아래, Regex 교체 도구는 JavaScript를 사용합니다 RegExp 엔진과 String.prototype.replace 모든 브라우저와 Node.js 가 제공하는 메서드. 실용적인 이유로 중요합니다: 도구에서 볼 수있는 동작은 동일한 패턴과 교체를 자신의 JavaScript 또는 TypeScript 코드에 붙여 넣을 때 얻을 수있는 동작과 동일합니다. 스크래치 도구에서 프로덕션으로 이동할 때 배울 수있는 별도의 풍미가 없으며 놀랄 일도 없습니다. 도구가 수락하는 대체 구문 - $1, $&, $<name> 그리고 나머지는 표준이 정의하고 문서화된 정확한 구문입니다 MDN&#39;s String.reference 를 대체합니다.

캡처 그룹 백레퍼런스는 어떻게 작동하나요?

이것은 regex 대체에서 가장 유용한 단일 아이디어이며 속도를 늦출 가치가 있습니다. 괄호 안에 패턴의 일부를 넣으면 a를 만듭니다 캡처 그룹. 엔진은 그룹이 일치한 텍스트를 기억하고,그룹의 번호를 왼쪽에서 오른쪽으로 1 부터 시작합니다. 교체 문자열에서 $1 는 &quot;캡처된 첫 번째 그룹이 무엇이든 삽입, &quot;를 의미합니다 $2 두 번째, 등등 $99.

날짜 예제는 그것을 구체화시킵니다. 패턴 (\d{4})-(\d{2})-(\d{2}) 는 세 개의 그룹을 가지고 있습니다: 네 자리 연도,두 자리 월,두 자리 일. 일치할 때 2024-01-15, 그룹 1이 보유합니다 2024, 그룹 2가 보유합니다 01그리고 그룹 3이 유지됩니다 15. 의 대체 $3/$2/$1 그런 다음 해당 조각에서 다른 순서와 다른 분리기를 사용하여 새 문자열을 조립하여 생성합니다 15/01/2024. 아무것도 삭제되지 않고 다시 입력되었습니다 - 출력은 문자 그대로 캡처 된 조각에서 다시 작성됩니다. 토큰 순서를 변경하고 토큰 사이의 구두점을 변경하고 다른 텍스트로 감싸고 파일의 모든 날짜를 하나의 표현식으로 다시 포맷했습니다.

명명된 그룹은 읽을 수 있는 레이블이 있는 동일한 아이디어입니다. 괄호를 세는 대신,쓰는 것입니다 (?<year>\d{4}) 그리고 교체 시 다음과 같이 언급하세요 $<year>2 개 3 개의 그룹을 가진 본을 위해 수는 정밀합니다,그러나 일단 당신이 5 개 6 개를 저글링하고 있으면,이름은 본과 보충 둘 다 읽게 멀리 쉽게 하고 나중에 바꾸기 위하여 만듭니다. 공구는 둘 다 교환할 수 있게 지원합니다,그래서 당신은 섞을 수 있습니다 $1 그리고 $<name> 원한다면 같은 대체에서요. 처음 패턴을 조립하고 어떤 그룹이 필요한지 아직 확실하지 않을 때,the 정규식 빌더 교체를 실행하기 위해 여기에 가져오기 전에 하나씩 구성하는 데 도움이 됩니다.

특별한 대체 토큰은 무엇을 의미합니까?

달러 기호는 대체 문자열 내부에서 특별하며,숫자와 명명 된 그룹 이외의 작은 토큰 세트를 소개합니다. 그들을 알면 필요한 것보다 더 복잡한 패턴에 도달하지 못합니다.

$& 일치하는 부분 문자열 전체를 삽입합니다. 일치 항목을 다시 작성하기보다는 래핑하거나 주석을 달 때 원하는 것입니다. 패턴입니다 \b\w+@\w+\.\w+\b 의 교체로 <$&> 그룹에서 전체를 캡처할 필요 없이 모든 이메일 주소 주위에 꺾쇠 괄호를 배치합니다. $\`` (a backtick) inserts everything *before* the match, and $&#39;(an apostrophe) inserts everything *after* it; these are rarely needed but occasionally exactly right. And because$is special, outputting a literal dollar sign requires doubling it:$$in the replacement produces a single출력에 $`, 당신이 통화를 다시 포맷하는 날에 중요.

메모리에 커밋할 가치가 있는 삭제 관용구가 하나 있습니다: 빈 교체는 모든 일치를 제거합니다. 전역 플래그가 켜져 있고 교체 필드가 비어 있는 상태에서 도구는 텍스트에서 패턴이 발생할 때마다 삭제합니다. 이것이 모든 HTML 태그를 제거하는 가장 깨끗한 방법입니다 <[^>]+>, 모든 후행 공간 +$ 다중 라인 모드에서는 전화번호의 모든 숫자가 아닌 숫자입니다 \D. 공백이나 자리 표시자로 교체하는 것이 아닙니다; 아무것도 없는 상태로 교체하면 일치 항목이 사라집니다.

교체에 어떤 플래그가 중요합니까?

정규식 상의 플래그는 적용 방법을 변경하며,그 중 두 개는 일상적인 교체 작업을 지배합니다. 나머지는 상황에 따라 다르지만 가끔 결정적입니다.

글로벌 플래그, g는, 가장 많이 토글할 녀석입니다.없이는 JavaScript&#39;s replace 만 변경합니다 첫번째 일치시키고 나머지 텍스트는 그대로 둡니다. 이것이 표준입니다 String.replace 대체자를 기대하는 사람들을 행동하고 놀라게 합니다. 회전하다 g 에 그리고 텍스트의 모든 일치 다시 작성 됩니다. 도구 기본값 글로벌에,왜냐하면 모든 것을 교체 하는 것은 사람들이 의미 하는 것 이십 중 열 아홉 번,하지만 토글은 당신이 진정으로 첫 번째 발생만 터치 하 고 싶은 시간에 대 한 거기 무시-케이스 플래그, i는, 문자 케이스에 상관없이 패턴을 일치하게 합니다, 그래서 error 또한 일치 Error 그리고 ERROR - 로그 수준을 정규화하거나 일관되지 않은 대문자를 정리할 때 필수적입니다.

다중선 플래그, m, 앵커의 내용을 변경합니다 ^ 그리고 $ 평균: 켜져 있으면 각각의 시작과 끝이 일치합니다 라인 뒤에 오는 공백을 벗기거나 모든 행 앞에 붙일 때 원하는 전체 텍스트가 아니라. dotAll 플래그, s는, 점이 개행 문자와 일치하게 하므로 패턴이 줄 바꿈에 걸쳐 있을 수 있습니다 - 다중 줄 블록을 다시 작성하는 데 유용합니다. The u (유니코드) 및 y (끈적끈적한) 플래그는 고급 케이스용입니다: u 기본 평면 외부의 문자와 특정 이스케이프 형식을 올바르게 처리할 수 있습니다 y 각 경기를 이전 경기 이후의 정확한 위치로 고정합니다. 아래 비교표에는 각 경기가 자신의 자리를 차지할 때가 요약되어 있습니다.

깃발 편지 교체에 미치는 영향 일반적인 사용
글로벌 g 첫 번째 경기 대신 모든 경기를 교체하세요 거의 모든 교체
케이스 무시 i 레터 케이스에 상관없이 매치 로그 수준 정규화, 대문자 정리
멀티라인 m ^ 그리고 $ 각 선에 닻 접두사, 후행 공백 제거
점전체 s 점은 개행과도 일치합니다 다중 라인 블록을 다시 작성합니다
유니코드 u 아스트랄 캐릭터의 올바른 처리 및 \u{...} 이모티콘, 비라틴어 스크립트
끈적끈적한 y 현재 위치에서만 일치 토큰화기, 엄격한 순차 구문 분석

일반 찾기 및 바꾸기 대신 regex replace를 언제 사용해야 합니까?

구분선은 간단합니다: 정확한 텍스트를 알고 있을 때는 일반 찾기-바꾸기를 사용하고,모양은 알지만 정확한 텍스트는 모를 때는 regex replace 에 도달합니다. 만약 여러분이 모든 것을 바꾸고 있다면 20232024을, 보통의 대체는 더 빠르고 안전합니다 값에 상관없이 4 자리 년마다 변경하는 경우 패턴 만이 그것을 표현할 수 있습니다.

세 가지 작업 계열은 분명히 정규식 측면에 속합니다. 첫 번째는 재포맷내용이 동일하 체재하고 그러나 그것의 배열이 변화하는 곳에, - 날짜,전화 번호,쓰인 이름 &quot;Last, First&quot; 당신이 &quot;First Last.&quot 로 원하는 것; 이 전부를 더한 재정렬된 보충 손잡이를 붙잡으십시오. 두번째는 대량 스트리핑는, 패턴과 일치하는 모든 것을 삭제하는 곳 - 태그, 주석, 제어 문자, 여분의 공백 - 아무것도 교체하여. 세 번째는 대규모 조건부 편집를 사용하여 패턴이 발생할 때마다 줄바꿈하거나 접두사를 붙이거나 주석을 달 수 있습니다 $& 일치 항목을 유지하고 추가하려면. 자신에게 설명하는 변환에 &quot;every&quot;라는 단어가 포함되고 그 뒤에 리터럴 문자열이 아닌 설명이 오면 regex-replace 영역에 있는 것입니다.

워크플로 인수도 있습니다. 코드 편집기&#39;s 찾기 및 바꾸기 작업에서 이러한 편집을 수행하지만 파일을 제자리에 편집하므로 실수는 실제 파일의 실수입니다. 스크래치 도구에서 변환을 실행하면 먼저 커밋하기 전에 출력과 교체 횟수를 확인한 다음 검증된 결과를 다시 붙여넣을 수 있기 때문입니다 Regex 교체 도구는 브라우저에서 완전히 실행되며 붙여넣은 내용을 업로드하지 않습니다. 텍스트가 프로덕션 로그이거나 고객 내보내기인 경우에도 사용하는 것이 안전합니다. 이 점은 제가 전체 내용을 설명합니다 온라인 도구에 대한 데이터 개인 정보 보호 가이드.

regex replace의 일반적인 실수는 무엇입니까?

가장 빈번한 것은 글로벌 플래그를 잊어 버리고 왜 첫 번째 경기 만 변경되었는지 궁금해하는 것입니다. 교체가 거의 아무것도하지 않은 것처럼 보이면 - 수십 가지를 예상 한 한 편집 - 그것을 확인하십시오 g 켜져 있습니다. 도구가 기본으로 켜져 있는 일반적인 여행이지만,단일 일치를 대상으로 설정하기 위해 끄는 순간 다시 설정하는 것을 잊지 마십시오.

두 번째는 리터럴입니다 $1 캡처된 텍스트를 예상한 출력에 나타납니다. 이는 거의 항상 참조하는 그룹이 존재하지 않음을 의미합니다. 패턴에는 첫 번째 괄호 세트가 없으므로 아무 것도 없습니다 $1 대신하려면 엔진이 토큰을 그대로 둡니다. 수정 사항은 재사용하려는 부분을 괄호 안에 싸서 그룹을 만들고 왼쪽부터 그룹을 세는 것입니다. 패턴이 중첩되거나 선택적 그룹일 때 관련 트랩이 잘못 계산됩니다; 번호 매기기가 혼란스러워지면 참조가 모호하지 않도록 명명된 그룹으로 전환합니다.

세번째 실수는 의도한 것 이상으로 일치하는 패턴입니다. 보통 수량자는 탐욕스럽기 때문이죠. 와 같은 패턴 <.+> 하나의 HTML 태그와 일치하도록 의도된 것은 첫 번째 태그부터 행복하게 일치합니다 <마지막 > 라인에,두 태그 사이의 모든 것을 삼키는. 치료법은 욕심없는 수량자,입니다 <.+?>또는 더 정확한 문자 클래스입니다 <[^>]+>. 에서 패턴을 검증하는 상황이 바로 이것이다 정규식 테스터 먼저 강조된 내용을 살펴보고 교체 작업을 실행하세요 regex-테스터 가이드 자세히 살펴봅니다. 도구에 표시된 교체 횟수는 다른 보호 장치입니다: 변경하려는 항목 수보다 훨씬 많거나 훨씬 적은 교체 횟수를 보고하는 경우 도구가 아니라 패턴이 잘못되었습니다.

작업된 예: 이름을 다시 포맷하고 노이즈를 제거합니다

작은 일을 끝과 끝으로 걸어 보겠습니다. 왜냐하면 조각들이 함께 작동하는 것을 보는 것이 어떤 단일 규칙보다 아이디어를 더 잘 수정하기 때문입니다. 내보낸 연락처 목록이 있다고 가정합니다 Doe, Jane 그리고 Smith, John한 줄에 하나씩, 원하는 대로 사용하세요 Jane Doe 그리고 John Smith.

각 줄의 모양은: 어떤 단어 문자,쉼표, 공백,다음 더 많은 단어 문자. 인 패턴으로 (\w+), (\w+)1그룹에 성을, 2그룹에 이름을 붙인 경우 이를 교환하고 쉼표를 삭제하는 대체 항목은 다음과 같습니다 $2 $1 - 그룹 2, 공백, 그룹 1. 목록을 에 붙여넣습니다 Regex 교체 도구,그 패턴과 교체를 입력하고,글로벌 플래그를 켜두고,모든 라인이 &quot;First Last&quot;로 한 번에 뒤집힙니다. 교체 카운트는 접촉 횟수에 대해 sanity-check 할 수 있는 얼마나 많은 라인이 접촉되었는지를 알려줍니다.

이제 동일한 내보내기에 일부 줄에 공백이 있다고 가정해 보겠습니다. 이는 두 번째 별도의 대체입니다: 패턴입니다 +$ 다중선 플래그가 켜져 있습니다 $ 각 줄의 끝과 일치하고 빈 대체를 수행하므로 일치하는 공백이 대체되지 않고 삭제됩니다. 이름 스왑 후 실행하고 파일이 깨끗합니다. 2패스 접근 방식 - 재구성할 대체 방법 1개, 제거할 대체 방법 1개 -는 일반적이며 각 패스는 복사하기 전에 출력과 개수를 표시하므로 변환이 의도한 대로 수행되었는지 추측할 수 없습니다. 재구성된 텍스트가 다른 어떤 것도 이동하지 않았는지 확인하기 위해 원본에 대한 최종 시각적 차이가 필요한 경우 두 버전을 모두 해당 버전에 붙여넣습니다 텍스트 차이 도구. 이것이 맞는 더 넓은 일상 유틸리티 키트의 경우, 웹 개발자 툴킷 내가 가장 많이 도달한 것들을 수집합니다.

자주 묻는 질문

온라인에서 정규식을 찾아서 대체하려면 어떻게 해야 하나요? 슬래시 없이 찾기 필드에 패턴을 입력하고 바꾸기 필드에 바꾸기를 쓰고 플래그를 선택하고 텍스트를 붙여넣습니다. 다시 쓴 출력이 즉시 나타나며 얼마나 많은 바꾸기가 실행되었는지 보여줍니다. 모든 것이 브라우저에서 발생하므로 아무 것도 업로드되지 않습니다.

캡처 그룹 백레퍼런스는 대체에서 어떻게 작동합니까? 패턴의 괄호는 번호가 매겨진 그룹을 만들고, $1, $2 등으로 대체하여 재사용합니다. 예를 들어 $3/$2/$1 로 대체된 패턴 (\d{4})-(\d{2})-(\d{2}) 는 2024-01-15 를 15/01/2024 와 같은 그룹 (?\d{4}) 는 $로 참조됩니다.

첫 번째 경기 대신 모든 경기를 어떻게 교체합니까? g (global) 플래그를 활성화합니다. 이것이 없으면 JavaScript 는 String.replace 메서드가 동작하는 것과 똑같이 첫 번째 일치만 대체합니다. g 가 활성화되면 텍스트의 모든 일치가 대체되며,이는 대부분의 replace-all 작업에 필요한 것입니다.

모든 일치 항목을 교체하는 대신 어떻게 삭제합니까? 바꾸기 필드를 비워 둡니다. 전역 플래그가 켜져 있으면 각 일치 항목이 텍스트에서 제거됩니다. 이는 태그,공백 실행 또는 패턴을 공유하는 원치 않는 문자를 제거하는 가장 깨끗한 방법입니다.

특별한 토큰 $ & amp;, 백틱, 아포스트로피는 대체에서 무엇을 의미합니까? $&amp; 일치하는 부분 문자열 전체를 삽입하고 백틱은 일치 앞에 텍스트를 삽입하고 아포스트로피는 그 뒤에 텍스트를 삽입합니다. 리터럴 달러 기호를 출력하려면 $$를 쓰십시오. 이들은 표준 JavaScript String.replace 특수 대체 패턴을 따릅니다.

이 도구는 어떤 regex 맛을 사용합니까? 브라우저에 내장된 JavaScript (ECMAScript) RegExp 엔진을 사용하는데,이는 Node.js 의 것과 동일합니다. 여기의 결과는 JavaScript 와 TypeScript 에서 동일한 패턴과 교체가 어떻게 동작하는지 일치합니다. JavaScript regex 는 일부 고급 기능에서 PCRE,Python re 및 Java 와 다릅니다.

대체품이 캡처된 텍스트 대신 문자 그대로 $1를 생성하는 이유는 무엇입니까? 출력에서 리터럴 $1 은 보통 패턴에 첫 번째 캡처 그룹이 없으므로 $1 이 참조할 수 있는 것이 없음을 의미합니다. 재사용할 부분을 괄호 안에 감싸서 그룹을 만들고,그룹을 1 부터 왼쪽에서 오른쪽으로 계산합니다.

민감한 데이터에서 regex replace 를 실행하는 것이 안전합니까? 예. 모든 일치 및 교체는 브라우저 내부의 JavaScript 에서 이루어 지므로 패턴,교체 또는 텍스트가 모든 서버로 전송되지 않으며 아무것도 기록되지 않으며 도구가 연결이 비활성화 된 상태로 작동하므로 로그 파일,개인 데이터 또는 독점 형식을 안전하게 다시 포맷 할 수 있습니다.


이 가이드는 무료와 함께 제공됩니다 Regex 교체 Toolz.dev의 도구 - 가입 없음, 업로드 없음, 오프라인으로 작동.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!