목차
Excel 수식에서 정규식이 지원되지 않는 이유를 이해할 수 없습니까? 이제 그들은 :) 사용자 지정 기능을 사용하여 특정 패턴과 일치하는 문자열을 쉽게 찾고, 바꾸고, 추출하고, 제거할 수 있습니다.
첫눈에 Excel에는 텍스트 문자열에 필요한 모든 것이 있습니다. 조작. 음… 정규 표현식은 어떻습니까? 죄송합니다. Excel에는 기본 제공 Regex 함수가 없습니다. 하지만 우리가 직접 만들 수 없다고 말하는 사람은 없습니다 :)
정규식이란 무엇입니까?
정규식(일명 regex 또는 regexp )는 검색 패턴을 정의하는 특별히 인코딩된 문자 시퀀스입니다. 해당 패턴을 사용하여 문자열에서 일치하는 문자 조합을 찾거나 데이터 입력의 유효성을 검사할 수 있습니다. 와일드카드 표기법에 익숙하다면 정규식을 와일드카드의 고급 버전으로 생각할 수 있습니다.
정규식에는 특수 문자, 연산자 및 구문으로 구성된 자체 구문이 있습니다. 예를 들어 [0-5]는 0에서 5까지의 모든 단일 숫자와 일치합니다.
정규식은 JavaScript 및 VBA를 비롯한 많은 프로그래밍 언어에서 사용됩니다. 후자에는 특수한 RegExp 개체가 있으며 사용자 정의 함수를 만드는 데 활용할 것입니다.
Excel이 정규식을 지원합니까?
안타깝지만 Excel에는 내장된 정규식 함수가 없습니다. 수식에서 정규식을 사용하려면 사용자 정의 함수(VBA)를 만들어야 합니다.arguments:
=IF(RegExpMatch(A5, $A$2), "Yes", "No")
더 많은 수식 예를 보려면 다음을 참조하세요.
- 정규식을 사용하여 문자열을 일치시키는 방법
- 정규식을 사용한 Excel 데이터 유효성 검사
Excel Regex 추출 기능
RegExpExtract 기능은 정규식과 일치하는 하위 문자열을 검색하고 모든 일치 항목을 추출하거나 특정 일치.
RegExpExtract(text, pattern, [instance_num], [match_case])Where:
- Text (필수) - 검색할 텍스트 문자열 in.
- Pattern (필수) - 일치시킬 정규식.
- Instance_num (선택) - 일치시킬 인스턴스를 나타내는 일련 번호 발췌. 생략하면 찾은 모든 일치 항목을 반환합니다(기본값).
- Match_case (선택 사항) - 텍스트 대소문자를 일치시킬지(TRUE 또는 생략) 무시할지(FALSE) 정의합니다.
여기에서 함수의 코드를 얻을 수 있습니다.
예제: 정규 표현식을 사용하여 문자열을 추출하는 방법
예제를 조금 더 살펴보면 인보이스 번호를 추출해 보겠습니다. 이를 위해 7자리 숫자와 일치하는 매우 간단한 정규식을 사용합니다.
Pattern : \b\d{7}\b
Put A2의 패턴과 다음과 같은 간단하고 우아한 수식으로 작업을 완료할 수 있습니다.
=RegExpExtract(A5, $A$2)
패턴이 일치하면 수식은 일치하는 항목이 없으면 인보이스 번호를 추출합니다. - 아무것도 반환되지 않습니다.
더 많은 예를 보려면 Excel에서 문자열을 추출하는 방법을 참조하세요.regex 사용.
Excel Regex Replace 함수
RegExpReplace 함수는 regex와 일치하는 값을 지정한 텍스트로 바꿉니다.
RegExpReplace(text, pattern, replacement , [instance_num], [match_case])여기서:
- Text (필수) - 검색할 텍스트 문자열입니다.
- Pattern (필수) - 일치시킬 정규식입니다.
- Replacement (필수) - 일치하는 하위 문자열을 바꿀 텍스트입니다.
- Instance_num (선택사항) - 교체할 인스턴스. 기본값은 "모든 일치 항목"입니다.
- Match_case (선택 사항) - 텍스트 대소문자 일치 여부(TRUE 또는 생략) 또는 무시(FALSE) 여부를 제어합니다.
함수의 코드는 여기에서 확인할 수 있습니다.
예: 정규 표현식을 사용하여 문자열을 교체하거나 제거하는 방법
일부 레코드에는 신용 카드 번호가 포함되어 있습니다. 이 정보는 기밀이므로 다른 것으로 바꾸거나 완전히 삭제할 수 있습니다. 두 작업 모두 RegExpReplace 기능을 사용하여 수행할 수 있습니다. 어떻게? 두 번째 시나리오에서는 빈 문자열로 대체합니다.
샘플 테이블에서 모든 카드 번호는 16자리이며 공백으로 구분된 4개의 그룹으로 작성됩니다. 이를 찾기 위해 다음 정규식을 사용하여 패턴을 복제합니다.
Pattern : \b\d{4} \d{4} \d{4} \d{4}\ b
교체에는 다음 문자열이 사용됩니다.
대체 : XXXX XXXX XXXXXXXX
신용 카드 번호를 중요하지 않은 정보로 대체 하는 완전한 공식은 다음과 같습니다.
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")
별도의 셀( A2 및 B2) 공식은 동일하게 작동합니다.
Excel에서 "제거"는 "바꾸기"의 특별한 경우입니다. 신용 카드 번호를 제거 하려면 대체 인수에 빈 문자열("")을 사용하십시오:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")
팁. 결과에서 빈 줄의 장비를 얻으려면 다음 예제에 표시된 대로 다른 RegExpReplace 함수를 사용할 수 있습니다. 정규식을 사용하여 빈 줄을 제거하는 방법.
자세한 내용은 다음을 참조하십시오.
- 정규식을 사용하여 Excel에서 문자열을 바꾸는 방법
- 정규식을 사용하여 문자열을 제거하는 방법
- 정규식을 사용하여 공백을 제거하는 방법
정규식 도구를 일치, 추출 , 하위 문자열 바꾸기 및 제거
Ultimate Suite 사용자는 통합 문서에 코드 한 줄을 삽입하지 않고도 정규식의 모든 기능을 사용할 수 있습니다. 필요한 모든 코드는 개발자가 작성하며 설치하는 동안 Excel에 원활하게 통합됩니다.
위에서 설명한 VBA 기능과 달리 Ultimate Suite의 기능은 .NET 기반이며 두 가지 주요 이점을 제공합니다.
- VBA 코드를 추가하지 않고 매크로 사용 파일로 저장하지 않고도 일반 .xlsx 통합 문서에서 정규식을 사용할 수 있습니다.
- .NET Regex 엔진은 모든 기능을 갖춘 클래식을 지원합니다.보다 정교한 패턴을 구성할 수 있는 정규식.
Excel에서 Regex를 사용하는 방법
Ultimate Suite가 설치된 상태에서 Excel에서 정규식을 사용하는 것은 다음 두 단계만큼 간단합니다. :
- Ablebits 데이터 탭의 텍스트 그룹에서 정규식 도구 를 클릭합니다.
- 정규식 도구 창에서 다음을 수행합니다.
- 소스 데이터를 선택합니다.
- 정규식 패턴을 입력합니다.
- 원하는 옵션을 선택하십시오: Match , Extract , Remove 또는 Replace .
- 결과를 다음과 같이 얻으려면 값이 아닌 수식인 경우 수식으로 삽입 확인란을 선택합니다.
- 작업 버튼을 누릅니다.
예를 들어 셀에서 신용 카드 번호를 제거하려면 A2:A6, 다음 설정을 구성합니다.
AblebitsRegex 함수가 원본 오른쪽의 새 열에 삽입됩니다. 데이터. 이 경우 수식은 다음과 같습니다.
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
수식이 있으면 기본 수식처럼 편집, 복사 또는 이동할 수 있습니다.
Regex 수식을 셀에 직접 삽입하는 방법
AblebitsRegex 함수는 추가 기능의 인터페이스를 사용하지 않고 셀에 직접 삽입할 수도 있습니다. 방법은 다음과 같습니다.
- 수식 입력줄에서 fx 버튼을 클릭하거나 수식 탭에서 함수 삽입 을 클릭합니다.
- 함수 삽입 대화 상자에서 AblebitsUDFs 를 선택합니다.범주에서 원하는 함수를 선택하고 확인을 클릭합니다.
- 일반적으로 하는 것처럼 함수의 인수를 정의하고 확인을 클릭합니다. 완료!
자세한 내용은 Excel용 정규식 도구를 참조하세요.
정규식을 사용하여 Excel 셀의 텍스트를 일치, 추출, 교체 및 제거하는 방법입니다. 읽어 주셔서 감사합니다. 다음 주 블로그에서 뵙겠습니다!
사용 가능한 다운로드
Excel Regex - 수식 예제(.xlsm 파일)
Ultimate Suite - 평가판(.exe 파일)
또는 .NET 기반) 또는 정규식을 지원하는 타사 도구를 설치합니다.Excel Regex 치트 시트
정규식 패턴이 매우 단순하든 매우 정교하든 관계없이 공통 구문을 사용하여 빌드됩니다. 이 자습서는 정규식을 가르치는 것을 목표로 하지 않습니다. 이를 위해 초보자를 위한 무료 자습서부터 고급 사용자를 위한 프리미엄 과정에 이르기까지 온라인 리소스가 많이 있습니다.
아래에서 기본 사항을 파악하는 데 도움이 되는 주요 RegEx 패턴에 대한 빠른 참조를 제공합니다. 또한 추가 예제를 공부할 때 치트 시트로 사용할 수 있습니다.
정규식에 익숙하다면 RegExp 함수로 바로 이동할 수 있습니다.
문자
이 특정 문자와 일치시키기 위해 가장 자주 사용되는 패턴입니다.
패턴 | 설명 | 예제 | 일치 |
. | 와일드카드 문자: 줄 바꿈 | .ot | dot 를 제외한 모든 단일 문자와 일치합니다. hot , pot , @ot |
\d | 숫자 문자: 임의의 한 자리 0에서 9까지 | \d | a1b 에서 1 |
\D<와 일치합니다. 15> | 숫자가 아닌 모든 문자 | \D | a1b 에서 a 및 b<2와 일치합니다> |
\s | 공백 문자: 공백, 탭, 새 줄 및 캐리지 리턴 | .\s. | In 3센트 , 일치 3c |
\S | 모두공백이 아닌 문자 | \S+ | 30 cents 에서 30 및 cents |
\w | 단어 문자: 모든 ASCII 문자, 숫자 또는 밑줄 | \w+ | In 5_cats*** , 5_cats |
\W | 영숫자 또는 밑줄이 아닌 모든 문자와 일치 | \W+ | 5_cats*** 에서 *** |
\t | Tab | <14와 일치합니다>||
\n | 새 줄 | \n\d+ | 두 줄에 아래 문자열은 10 5 고양이 10 개 |
\ | 문자의 특별한 의미를 이스케이프하므로 다음을 수행할 수 있습니다. search for it | \. \w+\. | 문자 그대로 "."을 찾을 수 있도록 마침표를 이스케이프 처리합니다. 문자열의 문자 Mr. , Mrs. , Prof. |
문자 클래스
이러한 패턴을 사용하여 서로 다른 문자 집합의 요소를 일치시킬 수 있습니다.
패턴 | 설명 | 예제 | 일치 |
[문자] | 괄호 안의 단일 문자와 일치 | d[oi]g | dog 및 dig |
[^characters] | 대괄호 안에 없는 단일 문자와 일치 | d[^oi]g | 일치 dag, dug , d1g 일치하지 않음 개 및 dig |
[from–to] | brackets | [0-9] [a-z] [A-Z] | 0에서 9까지의 모든 단일 숫자 단일 소문자 단일 대문자 |
한정자
한정자는 일치시킬 문자 수를 지정하는 특수 표현식입니다. 한정 기호는 항상 앞에 있는 문자에 적용됩니다.
패턴 | 설명 | 예제 | 일치 |
* | 0회 이상 발생 | 1a* | 1, 1a , 1aa, 1aaa 등 |
+ | 하나 이상의 발생 | po+ | In pot , 일치 po In poor , 일치 poo |
? | 0 또는 1회 발생 | roa?d | road, rod |
*? | 0 이상 발생하되 가능한 한 적게 | 1a*? | 1a , 1aa 및 1aaa 에서 일치 1a |
+? | 한 번 이상 발생하지만 가능한 한 적게 | po+? | pot 및 poor 에서 po |
?? | 0 또는 한 번 발생 , 그러나 가능한 한 적습니다 | roa?? | road 및 rod 에서 ro | <와 일치합니다. 16>
{n} | 앞의 패턴과 n번 일치 | \d{3} | 정확히 3자리 |
{엔 ,} | 앞의 패턴을 n회 이상 일치 | \d{3,} | 3자리 이상 |
{n,m} | 일치n번과 m번 사이의 선행 패턴 | \d{3,5} | 3~5자리 |
그룹화
그룹화 구문은 소스 문자열에서 하위 문자열을 캡처하는 데 사용되므로 일부 작업을 수행할 수 있습니다.
구문 | 설명 | 예제 | 일치 |
(패턴) | 그룹 캡처: 일치하는 하위 문자열을 캡처하고 서수를 할당합니다 | (\d+) | 5마리의 고양이와 10마리의 개 에서 5 (그룹 1) 및 10 (그룹 2)를 캡처 |
(?:pattern) | 비캡처 그룹: 그룹과 일치하지만 캡처하지 않음 | (\d+)(?: dogs) | 5마리의 고양이와 10마리의 개 에서 10 |
\1 | 그룹의 콘텐츠 캡처 1 | (\d+)\+(\d+)=\2\+\1 | 5+10=10+5 와 일치하고 5 캡처 그룹 2 |
\2 | 콘텐츠에 있는 및 10 |
앵커
앵커는 입력 문자열에서 찾을 위치를 지정합니다. 일치합니다.
앵커 | 설명 | 예제 | 일치 |
^ | 문자열 시작 참고: [^괄호 안]은 "not"을 의미합니다. | ^\d+ | 문자열의 시작. 고양이 5마리와 개 10마리 에서 5 |
$ | <14와 일치합니다>문자열 끝\d+$ | 문자열 끝의 임의의 숫자입니다. In 10Y | |
(?<=) | 긍정적 lookbehind | (?<=Y)X | 식 X와 일치 앞에 Y가 있는 경우(즉, X 뒤에 Y가 있는 경우) |
(? | Negative lookbehind | (? | Y가 앞에 있지 않은 경우 표현식 X와 일치합니다. |
필수 사항을 알았으니 이제 가장 흥미로운 부분으로 넘어가겠습니다. 실제 데이터에 대한 정규식을 사용하여 문자열을 구문 분석하고 필요한 정보를 찾습니다. 구문에 대한 자세한 내용이 필요한 경우 정규식 언어에 대한 Microsoft 가이드가 도움이 될 수 있습니다.
Excel용 사용자 정의 RegEx 함수
이미 언급했듯이 Microsoft Excel에는 기본 제공 RegEx 함수가 없습니다.정규식을 활성화하기 위해 세 가지 사용자 정의 VBA 함수(일명 사용자 정의 함수)를 만들었습니다.아래 링크된 페이지 또는 샘플에서 코드를 복사할 수 있습니다. 통합 문서를 만든 다음 자신의 Excel 파일에 붙여넣습니다.
VBA RegExp 함수 작동 방식
이 섹션에서는 내부 메커니즘을 설명하며 int일 수 있습니다. 백엔드에서 무슨 일이 일어나는지 정확히 알고 싶은 사람들에게만 해당됩니다.
VBA에서 정규식을 사용하려면 RegEx 개체 참조 라이브러리를 활성화하거나 CreateObject 기능을 사용해야 합니다. VBA 편집기에서 참조를 설정하는 수고를 덜기 위해 후자의 접근 방식을 선택했습니다.
RegExp 개체에는 4개의 속성이 있습니다.
- Pattern - 이다입력 문자열에서 일치시킬 pattern .
- Global - 입력 문자열에서 모든 일치 항목을 찾을지 또는 첫 번째 항목만 찾을지 여부를 제어합니다. 함수에서 모든 일치 항목 을 가져오려면 True로 설정합니다.
- MultiLine - 여러 줄 문자열의 줄 바꿈에서 패턴을 일치시킬지 또는 첫 번째 줄에서. 우리 코드에서는 모든 줄 에서 검색하도록 True로 설정되어 있습니다.
- IgnoreCase - 정규식이 대소문자를 구분하는지(기본값) 또는 대소문자를 구분하는지 정의합니다. 민감하지 않습니다(True로 설정). 우리의 경우 선택적 match_case 매개변수를 구성하는 방법에 따라 다릅니다. 기본적으로 모든 기능은 대소문자를 구분 합니다.
VBA RegExp 제한
Excel VBA는 필수 정규식 패턴을 구현하지만 많은 고급 기능이 부족합니다. .NET, Perl, Java 및 기타 정규식 엔진에서 사용할 수 있습니다. 예를 들어 VBA RegExp는 대소문자를 구분하지 않는 일치를 위한 (?i) 또는 여러 줄 모드, lookbehinds, POSIX 클래스를 위한 (?m) 등의 인라인 수정자를 지원하지 않습니다.
Excel Regex 일치 함수
RegExpMatch 함수는 입력 문자열에서 정규식과 일치하는 텍스트를 검색하고 일치하는 항목이 있으면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
RegExpMatch(text, pattern, [ match_case])여기서:
- Text (필수) - 검색할 하나 이상의 문자열입니다.
- Pattern ( 필수) - 일반일치시킬 식.
- Match_case (선택 사항) - 일치 유형. TRUE 또는 생략 - 대소문자를 구분합니다. FALSE - 대소문자를 구분하지 않음
함수의 코드가 여기에 있습니다.
예제: 정규식을 사용하여 문자열을 일치시키는 방법
아래 데이터세트에서 원하는 SKU 코드가 포함된 항목을 식별합니다.
각 SKU는 2개의 대문자, 하이픈, 4개의 숫자로 시작하므로 다음 식을 사용하여 일치시킬 수 있습니다.
패턴 : \b[A-Z]{2}-\d{4}\b
여기서 [A-Z]{2}는 A에서 Z까지의 2개의 대문자를 의미하고 \d{4 }는 0에서 9까지의 4자리 숫자를 의미합니다. 단어 경계 \b는 SKU가 별도의 단어이며 더 큰 문자열의 일부가 아님을 나타냅니다.
패턴이 설정되면 평소처럼 수식 입력을 시작합니다. , 함수 이름이 Excel의 자동 완성에서 제안하는 목록에 나타납니다.
원본 문자열이 A5에 있다고 가정하면 수식은 다음과 같습니다.
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
편의상 별도의 셀에 정규식을 입력하고 pattern 인수에 절대 참조($A$2)를 사용할 수 있습니다. 티. 이렇게 하면 수식을 다른 셀에 복사할 때 셀 주소가 변경되지 않은 상태로 유지됩니다.
=RegExpMatch(A5, $A$2)
TRUE 및 FALSE 대신 고유한 텍스트 레이블을 표시하려면 IF 함수에 RegExpMatch를 중첩하고 value_if_true 및 value_if_false 에 원하는 텍스트를 지정합니다.더하기 5는 15 를 제공하고 15
교체(OR) 구성
교체 피연산자는 OR 논리를 활성화하므로 이 요소 또는 해당 요소를 일치시킬 수 있습니다.
구성 | 설명 | 예 | 일치 |