Excel에서 특정 문자 또는 텍스트를 제거하는 정규식

  • 이 공유
Michael Brown
인수가 생략되면 발견된 모든 일치 항목이 제거됩니다. 특정 일치 항목을 삭제하려면 인스턴스 번호를 정의합니다.

아래 문자열에서 첫 번째 주문 번호를 삭제한다고 가정합니다. 이러한 모든 숫자는 해시 기호(#)로 시작하며 정확히 5자리를 포함합니다. 따라서 다음 정규식을 사용하여 식별할 수 있습니다.

Pattern : #\d{5}\b

단어 경계 \b는 일치하는 하위 문자열이 #10000001과 같은 더 큰 문자열의 일부.

모든 일치 항목을 제거하려면 instance_num 인수가 정의되지 않았습니다.

=RegExpReplace(A5, "#\d{5}\b", "")

첫 번째 항목만 제거하기 위해 instance_num 인수를 1:

=RegExpReplace(A5, "#\d{5}\b", "", 1)

Regex로 설정합니다. 특정 문자를 제거하려면

문자열에서 특정 문자를 제거하려면 원하지 않는 모든 문자를 적어 수직 막대로 구분하십시오.VBA RegExp 제한이 없는 구문, 두 번째로 모든 코드 통합이 백엔드에서 수행되므로 통합 문서에 VBA 코드를 삽입할 필요가 없습니다.

당신의 역할은 정규식을 구성하고 함수에 제공하세요 :) 실제 예에서 어떻게 하는지 보여드리겠습니다.

정규식을 사용하여 대괄호와 괄호 안의 텍스트를 제거하는 방법

긴 텍스트 문자열에서 덜 중요한 정보 종종 [괄호]와 (괄호)로 묶여 있습니다. 다른 모든 데이터를 유지하면서 이러한 관련 없는 세부 정보를 어떻게 제거합니까?

사실 우리는 html 태그(예: 꺾쇠 괄호 안의 텍스트)를 삭제하기 위한 유사한 정규식을 이미 구축했습니다. 분명히 동일한 방법이 대괄호와 둥근 괄호에도 적용됩니다.

Pattern : (\(.*?\))

정규식으로 도구 상자를 풍부하게 만들 수 있다면 Excel이 얼마나 강력할지 생각해 본 적이 있습니까? 우리는 생각했을 뿐만 아니라 노력했습니다 :) 이제 이 멋진 RegEx 함수를 자신의 통합 문서에 추가하고 패턴과 일치하는 하위 문자열을 즉시 지울 수 있습니다!

지난주에 우리는 정규식을 사용하여 Excel에서 문자열을 바꾸는 방법. 이를 위해 사용자 지정 Regex 바꾸기 기능을 만들었습니다. 결과적으로 이 함수는 기본 용도를 넘어 문자열을 대체할 수 있을 뿐만 아니라 문자열을 제거할 수도 있습니다. 어떻게 그럴 수 있니? Excel에서 값을 제거하는 것은 값을 빈 문자열로 바꾸는 것 외에는 아무것도 아닙니다. Regex 함수는 매우 유용합니다!

VBA RegExp 함수는 Excel에서 하위 문자열을 제거합니다

모두 알다시피, 정규식은 기본적으로 Excel에서 지원되지 않습니다. 이를 활성화하려면 고유한 사용자 정의 함수를 생성해야 합니다. 좋은 소식은 그러한 함수가 이미 작성되고 테스트되었으며 사용할 준비가 되었다는 것입니다. 이 코드를 복사하여 VBA 편집기에 붙여넣은 다음 파일을 매크로 사용 통합 문서 (.xlsm)로 저장하기만 하면 됩니다.

이 기능에는 다음 구문:

RegExpReplace(text, pattern, replacement, [instance_num], [match_case])

처음 3개의 인수는 필수이며 마지막 2개는 선택 사항입니다.

여기서:

  • Text - 검색할 텍스트 문자열닫는 괄호를 찾을 때까지 가능합니다.

어떤 패턴을 선택하든 결과는 완전히 동일합니다.

예를 들어 A5의 문자열에서 모든 html 태그를 제거하고 텍스트를 남기려면 공식은 다음과 같습니다.

=RegExpReplace(A5, "]*>", "")

또는 스크린샷에 표시된 대로 지연 수량자를 사용할 수 있습니다.

이 솔루션은 다음에 대해 완벽하게 작동합니다. 단일 텍스트(행 5 - 9). 여러 텍스트(행 10 - 12)의 경우 결과가 의심스럽습니다. 서로 다른 태그의 텍스트가 하나로 병합됩니다. 이것이 맞습니까? 유감스럽게도 쉽게 결정할 수 있는 것이 아닙니다. 모두 원하는 결과에 대한 이해에 달려 있습니다. 예를 들어, B11에서 결과 "A1"이 예상됩니다. B10에서는 "data1"과 "data2"를 공백으로 구분할 수 있습니다.

html 태그를 제거하고 나머지 텍스트를 공백으로 구분하려면 다음과 같이 진행할 수 있습니다.

  1. 빈 문자열이 아닌 공백 " "으로 태그 교체:

    =RegExpReplace(A5, "]*>", " ")

  2. 여러 공백을 단일 공백 ​​문자로 줄이기:

    =RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " ")

  3. Trim 선행 및 후행 공백:

    =TRIM(RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " "))

결과는 다음과 같습니다.

Ablebits Regex Remove Tool

Ultimate Suite for Excel을 사용할 기회가 있었다면 최근 릴리스에 도입된 새로운 Regex 도구를 이미 발견했을 것입니다. 이러한 .NET 기반 Regex 함수의 장점은 먼저 모든 기능을 갖춘 정규식을 지원한다는 것입니다. 제거 옵션을 선택하고 제거 를 누르십시오.

값이 아닌 수식으로 결과를 얻으려면 수식으로 삽입 확인란을 선택합니다.

A2:A5의 문자열에서 괄호 안의 텍스트를 제거하려면 설정을 구성합니다. 다음과 같이:

결과적으로 AblebitsRegexRemove 함수가 원본 데이터 옆의 새 열에 삽입됩니다.

함수는 표준 함수 삽입 대화 상자를 통해 셀에 직접 입력할 수도 있으며 AblebitsUDFs 로 분류됩니다.

AblebitsRegexRemove 는 텍스트를 제거하도록 설계되었으므로 두 개의 인수(소스 문자열 및 정규식)만 필요합니다. 두 매개변수 모두 수식에서 직접 정의하거나 셀 참조 형식으로 제공할 수 있습니다. 필요한 경우 이 사용자 지정 함수를 기본 함수와 함께 사용할 수 있습니다.

예를 들어 결과 문자열에서 추가 공백을 제거하려면 TRIM 함수를 래퍼로 활용할 수 있습니다.

=TRIM(AblebitsRegexRemove(A5, $A$2))

정규식을 사용하여 Excel에서 문자열을 제거하는 방법입니다. 읽어 주셔서 감사합니다. 다음 주 블로그에서 뵙기를 기대합니다!

사용 가능한 다운로드

Remove strings using regex - examples (.xlsm file)

Ultimate Suite - 평가판(.exe 파일)

in.
  • Pattern - 검색할 정규식입니다.
  • Replacement - 바꿀 텍스트입니다. 패턴과 일치하는 하위 문자열 을 제거하려면 교체를 위해 빈 문자열 ("")을 사용합니다.
  • Instance_num (선택 사항) - 인스턴스를 바꾸다. 생략하면 찾은 모든 일치 항목이 대체됩니다(기본값).
  • Match_case (선택 사항) - 텍스트 대소문자 일치 여부를 나타내는 부울 값입니다. 대소문자 구분 일치의 경우 TRUE(기본값)를 사용합니다. for case-insensitive - FALSE.
  • 자세한 내용은 RegExpReplace 함수를 참조하십시오.

    Tip. 간단한 경우 Excel 수식을 사용하여 셀에서 특정 문자나 단어를 제거할 수 있습니다. 그러나 정규식은 이에 대해 훨씬 더 많은 옵션을 제공합니다.

    정규식을 사용하여 문자열을 제거하는 방법 - 예

    위에서 언급한 바와 같이 패턴과 일치하는 텍스트 부분을 제거하려면 해당 부분을 교체해야 합니다. 빈 문자열로. 따라서 일반적인 수식은 다음과 같은 형태를 취합니다.

    RegExpReplace(text, pattern, "", [instance_num], [match_case])

    아래 예는 이 기본 개념의 다양한 구현을 보여줍니다.

    제거 모든 일치 또는 특정 일치

    RegExpReplace 함수는 주어진 정규식과 일치하는 모든 하위 문자열을 찾도록 설계되었습니다. 제거할 항목은 instance_num 이라는 네 번째 선택적 인수에 의해 제어됩니다.

    기본값은 "모두 일치"입니다. instance_num 연결 연산자(&) 및 RIGHT, MID 및 LEFT와 같은 텍스트 함수.

    예를 들어 모든 전화번호를 (123) 456-7890 형식으로 작성하려면 수식은 다음과 같습니다.

    ="("&LEFT(B5, 3)&") "&MID(B5, 4, 3)&"-"&RIGHT(B5, 4)

    여기서 B5는 RegExpReplace 함수의 출력입니다.

    정규식을 사용하여 특수 문자 제거

    자습서 중 하나에서 내장 및 사용자 정의 기능을 사용하여 Excel에서 원치 않는 문자를 제거하는 방법을 살펴보았습니다. 정규식을 사용하면 작업이 훨씬 쉬워집니다! 삭제할 모든 문자를 나열하는 대신 유지하려는 문자만 지정하면 됩니다 :)

    패턴은 부정 문자 클래스 를 기반으로 합니다. 캐럿은 문자 클래스 안에 배치됩니다[^ ] 대괄호 안의 단일 문자와 일치합니다. + 한정 기호는 연속 문자를 단일 일치로 간주하도록 강제하므로 각 개별 문자가 아닌 일치하는 하위 문자열에 대해 대체가 수행됩니다.

    필요에 따라 다음 정규식 중 하나를 선택하십시오.

    영숫자 가 아닌 문자, 즉 문자와 숫자를 제외한 모든 문자를 제거하려면:

    패턴 : [^0-9a-zA-Z] +

    문자 , 숫자 공백 을 제외한 모든 문자 를 제거하려면:

    패턴 : [^0-9a-zA-Z ]+

    문자 , 숫자 밑줄 을 제외한 모든 문자를 삭제하려면 \를 사용할 수 있습니다. 영숫자가 아닌 모든 문자를 나타내는 W밑줄:

    패턴 : \W+

    다른 문자 를 유지하려는 경우, 예: 구두점은 대괄호 안에 넣으십시오.

    예를 들어 문자, 숫자, 마침표, 쉼표 또는 공백 이외의 문자를 제거하려면 다음 정규식을 사용하십시오.

    Pattern : [^0-9a-zA-Z\., ]+

    모든 특수 문자를 성공적으로 제거했지만 추가 공백이 남아 있습니다.

    이 문제를 해결하려면 위의 함수를 여러 공백을 단일 공백 ​​문자로 대체하는 다른 함수에 중첩할 수 있습니다.

    =RegExpReplace(RegExpReplace(A5,$A$2,""), " +", " ")

    또는 동일한 효과로 기본 TRIM 함수를 사용하면 됩니다. :

    =TRIM(RegExpReplace(A5, $A$2, ""))

    숫자가 아닌 문자를 제거하는 Regex

    문자열에서 모든 숫자가 아닌 문자를 삭제하려면 다음을 사용할 수 있습니다. 이 긴 수식 또는 아래 나열된 매우 간단한 정규식 중 하나입니다.

    숫자가 아닌 모든 문자와 일치:

    패턴 : \D+

    부정 클래스를 사용하여 숫자가 아닌 문자 제거:

    패턴 : [^0-9]+

    패턴 : [^\d] +

    팁. 텍스트를 제거하고 나머지 숫자를 별도의 셀에 넣거나 지정된 구분 기호로 구분된 하나의 셀에 모두 배치하는 것이 목표인 경우 정규식을 사용하여 문자열에서 숫자를 추출하는 방법에 설명된 대로 RegExpExtract 함수를 사용합니다.

    공백 뒤의 모든 것을 제거하는 정규식

    공백 뒤의 모든 것을 지우려면 공백( ) 또는공백(\s) 문자는 첫 번째 공백을 찾고 .*는 그 뒤의 모든 문자와 일치합니다.

    일반 공백만 포함하는 한 줄 문자열이 있는 경우(7비트 ASCII 시스템에서 값 32) , 아래 정규식 중 어떤 것을 사용하는지는 중요하지 않습니다. 여러 줄 문자열의 경우 차이가 있습니다.

    공백 문자 뒤의 모든 항목을 제거하려면 다음 정규식을 사용하세요.

    Pattern : " .*"

    =RegExpReplace(A5, " .*", "")

    이 수식은 각 줄 에서 첫 번째 공백 뒤의 모든 항목을 제거합니다. 결과를 올바르게 표시하려면 텍스트 줄 바꿈을 켜야 합니다.

    공백 뒤의 모든 항목(공백, 탭, 캐리지 리턴 및 새 줄 포함)을 제거하려면 정규식 is:

    Pattern : \s.*

    =RegExpReplace(A5, "\s.*", "")

    \s는 새 줄<을 포함하여 몇 가지 다른 공백 유형과 일치하기 때문입니다. 9> (\n), 이 수식은 셀의 줄 수에 관계없이 셀의 첫 번째 공백 뒤의 모든 내용을 삭제합니다. character

    이전 예제의 방법을 사용하여 지정한 문자 뒤의 텍스트를 지울 수 있습니다.

    각 라인을 개별적으로 처리하려면:

    일반 패턴 : char.*

    한 줄 문자열에서 char 뒤의 모든 항목을 제거합니다. 여러 줄 문자열에서 각 줄은 VBA Regex 특성에서 마침표(.)가 새 문자를 제외한 모든 문자와 일치하기 때문에 개별적으로 처리됩니다.문자열 ^의 시작, 하나 이상의 공백 " +" 바로 뒤에 오는 0개 이상의 공백이 아닌 문자 [^ ]*와 일치합니다. 결과에 잠재적인 선행 공백을 방지하기 위해 마지막 부분이 추가됩니다.

    각 줄의 첫 번째 공백 앞에 있는 텍스트를 제거하기 위해 수식은 기본 "모두 일치" 모드( instance_num 생략됨):

    =RegExpReplace(A5, "^[^ ]* +", "")

    첫 번째 줄의 첫 번째 공백 앞의 텍스트를 삭제하고 다른 모든 줄은 그대로 두려면 instance_num 인수를 1로 설정합니다.

    =RegExpReplace(A5, "^[^ ]* +", "", 1)

    문자 앞의 모든 것을 제거하는 정규식

    특정 문자 앞의 모든 텍스트를 제거하는 가장 쉬운 방법은 정규식을 사용하는 것입니다. 다음과 같습니다:

    일반 패턴 : ^[^char]*char

    인간 언어로 번역하면 다음과 같습니다. , char [^char]*를 제외한 0개 이상의 문자를 char 의 첫 번째 항목까지 일치시킵니다.

    예를 들어, 첫 번째 콜론 앞의 모든 텍스트를 삭제하려면 , 다음 정규식을 사용합니다.

    패턴 : ^[^:]*:

    결과에서 선행 공백을 방지하려면 공백 문자 \s*를 종료합니다. 이렇게 하면 모든 항목이 제거됩니다. 첫 번째 콜론 앞에 g를 사용하고 그 바로 뒤에 공백을 제거합니다.

    Pattern : ^[^:]*:\s*

    =RegExpReplace(A5, "^[^:]*:\s*", "")

    팁. 정규식 외에도 Excel에는 위치 또는 일치 항목별로 텍스트를 제거하는 고유한 방법이 있습니다. 기본 수식으로 작업을 수행하는 방법을 배우려면Excel에서 문자 앞이나 뒤의 텍스트를 제거하는 방법을 참조하십시오.

    Regex는 제외한 모든 것을 제거합니다.

    유지하려는 문자를 제외하고 문자열에서 모든 문자를 제거하려면 부정 문자 클래스를 사용합니다.

    예를 들어 소문자를 제외한 모든 문자를 제거하려면 및 점, 정규식은 다음과 같습니다.

    Pattern : [^a-z\.]+

    일치하는 항목을 찾았습니다. 한정 기호는 각 개별 문자를 처리하는 대신 하위 문자열을 대체하여 조금 더 빠르게 만듭니다.

    =RegExpReplace(A5, "[^a-z\.]+", "")

    Regex는 Excel에서 html 태그를 제거합니다.

    먼저 HTML은 정규 언어가 아니므로 정규식을 사용하여 구문 분석하는 것이 최선의 방법이 아니라는 점에 유의해야 합니다. 즉, 정규식은 셀에서 태그를 제거하여 데이터세트를 더 깔끔하게 만드는 데 확실히 도움이 될 수 있습니다.

    html 태그는 항상 꺾쇠 괄호 안에 배치되므로 다음 정규식 중 하나를 사용하여 태그를 찾을 수 있습니다.

    Negated class:

    Pattern : ]*>

    여기서는 여는 꺾쇠 괄호와 다음을 제외한 모든 문자가 0개 이상 일치하는지 확인합니다. 닫는 꺾쇠 괄호 [^>]* 가장 가까운 닫는 꺾쇠 괄호까지.

    지연 검색:

    패턴 :

    여기서 일치합니다. 첫 번째 여는 괄호에서 첫 번째 닫는 괄호까지. 물음표는 .*가 다음과 같은 적은 수의 문자와 일치하도록 합니다.line.

    모든 줄을 단일 문자열로 처리하려면:

    일반 패턴 : char(.

    Michael Brown은 소프트웨어 도구를 사용하여 복잡한 프로세스를 단순화하려는 열정을 가진 열성적인 기술 애호가입니다. 기술 산업에서 10년 이상의 경험을 쌓은 그는 Microsoft Excel 및 Outlook은 물론 Google 스프레드시트 및 문서 도구에 대한 기술을 연마했습니다. Michael의 블로그는 자신의 지식과 전문 지식을 다른 사람과 공유하는 데 전념하며 따라하기 쉬운 팁과 생산성 및 효율성 향상을 위한 자습서를 제공합니다. 노련한 전문가이든 초보자이든 Michael의 블로그는 이러한 필수 소프트웨어 도구를 최대한 활용하기 위한 귀중한 통찰력과 실용적인 조언을 제공합니다.