정규 표현식에 대한 빠른 가이드

G Suite 및 Office 360 ​​용 사용자 및 Python 개발자

(Badi James) (2020 년 5 월 20 일)

통계를 추출 할 때 언어를 사용하기가 거의 쉽지 않습니다. 텍스트 본문에 단어가 몇 번 나타나는지 찾아서 세는 작업조차도 언뜻보기에 현대 워드 프로세서와 코딩 라이브러리로 간단해야하는 것처럼 보이는 작업도 빠르게 복잡해질 수 있습니다.

텍스트 본문에 하늘이 언급되어 있는지 확인하는 예를 들어 보겠습니다. 간단한 접근 방식은 다음과 같습니다.

  • Ctrl + F “sky”(텍스트 편집기 또는 워드 프로세서를 사용하는 경우)
  • body\_of\_text의 “sky”( python 스크립트)

그러나 두 접근법 모두 항상 하늘에 대한 언급을 찾지는 않으며 때로는 오탐을 생성합니다. 이러한 접근 방식의 한계는 문자 s-k-y의 정확한 시퀀스를 검색하는 방법에서 비롯됩니다. 다음은이 접근 방식이 실패하게 만드는 언어의 몇 가지 기능입니다.

  • 대문자 표기 : 문장이 “Sky”또는 “Sky”로 시작하는 경우 고유 명사의 일부로 나타납니다 (또는 텍스트 작성자가 깨진 대문자 잠금 키를 가짐) 단어의 이러한 모양은 찾을 수 없습니다.
  • 다른 단어의 철자 : “pe sky “,”ri sky “등은 하늘이 잘못 감지됩니다.
  • 복수 : 스카이는 감지되지 않습니다.

많은 워드 프로세서와 텍스트 편집기에는 찾기 및 위의 문제 중 처음 두 가지를 해결하기위한 “교체”기능. 사실, 일반적으로 “대소 문자 무시”및 “전체 단어 일치”와 같은 옵션이 기본적으로 켜져 있습니다. 그러나 대체 단어 (복수형, 시제, 성별 등) 또는 대체 철자 (예 : Mohammad라는 이름의 많은 변형)가 누락되는 문제는 여전히 존재합니다.

Python을 사용하면 확장 할 수 있습니다. 조건문을 추가하여 단어의 모든 변형을 포함하고 오 탐지 일치를 제외하여 텍스트 본문 검색어 를 입력합니다. 그러나 이것은 고통 스러울 수 있으며이 간단한 작업에 대한 코드를 길고 유지하기 어렵게 만들 수 있습니다.

정규 표현식 입력

정규 표현식 (또는 줄여서 정규 표현식)은 다음과 같습니다. 텍스트 내부의 문자 패턴을 찾기위한 강력한 도구입니다. 코드 나 워드 프로세서에 찾을 특정 문자 시퀀스를 제공하는 대신 일치하는 텍스트 세그먼트를 확장하거나 제한하는 데 사용할 규칙을 설명하는 패턴 (정규 표현식)을 제공하는 것입니다. 주어진 패턴.

이 규칙을 지정하려면 정규 표현식에 특수 문자를 추가해야합니다. 위의 “하늘”예를 들어 보겠습니다. 정규식 “\ bsk (y | ies) \ b”는 “sky”및 “skies”모두와 일치하지만 “성가신”, “risky”또는 s-k-y를 포함하는 다른 단어와는 일치하지 않습니다. 추가 한 각 특수 문자의 목적을 분석해 보겠습니다.

표현식의 각 끝에있는”\ b “는 단어 경계 (예 : 공백, 구두점, 텍스트의 시작 또는 끝 등)를 지정합니다. 이것이 바로 정규식이 다른 단어와 일치하지 못하게하는 것입니다. “sky”가 철자의 일부를 형성하는 단어 ( “성가신”또는 “Skype”).

괄호는 캡처 그룹을 만듭니다. 특정 규칙을 적용하려는 정규식 부분을 지정하는 데 사용됩니다. 이 캡처 그룹에는 “|” (일명 수직 막대). 이것은 OR 연산자로 작동하여 왼쪽에있는 표현식 ( “y”) 또는 오른쪽에있는 표현식 ( “ies”)이 일치의 일부를 형성 할 수 있음을 지정합니다. 이렇게하면 정규식이 단수 “sky”와 복수 “skies”를 모두 일치시킬 수 있습니다.

대문자 화 문제를 해결하기 위해 일반적으로 Find에서 Ignore Case옵션으로 문제가되지 않습니다. 대부분의 워드 프로세서 및 텍스트 편집기의 함수는 정규식을 사용하여 검색 할 때도 사용할 수 있습니다. Python 정규식 라이브러리를 사용할 때 re e IGNORECASE 플래그를 정규식을 통해 검색 할 때 사용할 수 있습니다 (나중에 자세히 설명). 그러나이 옵션이나이 플래그가 없으면 “\ b (S | s) k (y | ies) \ b”와 같이 정규식을 확장하여 “Sky”, “sky”, “Skies”및 “skies”를 일치시킬 수 있습니다.

보시다시피 정규 표현식은 하늘 검색을 훨씬 더 유익하게 만들었습니다! 그러나 이것은 정규식이 무엇을 할 수 있는지에 대한 비교적 간단한 예였습니다. 다음은 정규 표현식의 강력 함과 다양성을 보여주는 몇 가지 예입니다.

  • M (u | o) hamm? (e | a) (d | t) 가장 많이 일치합니다. Mohammad의 철자 변형
  • (? Mountain) Bike는 일치 Mountain Bike는 하지만 커피와 일치하지 않습니다.
  • 커피 (?! date) 커피 날짜와 일치 하지만 커피 날짜는 아닙니다
  • (https : \ / \ /)? (www \.)? [a- z0–9] + \. [az] + (\. [az] +)? 여러 URL과 일치
  • [a-zA-Z0–9 -\_.] + @ [a-zA-Z] + \. [a-zA-Z] + ( \. [a-zA-Z] +)? 많은 이메일 주소와 일치

regexr.com : 정규식 학습을위한 훌륭한 웹 사이트

앞에서 설명한 예를 통해 “유용 해 보이지만 다른 모든 특별 광고를 어떻게 기억해야할까요? 캐릭터와 그들이하는 일? 정규 표현식이 의도 한대로 작동하는지 어떻게 알 수 있습니까?”. 걱정하지 마세요. regexr.com 이 도와 드리겠습니다.

이 웹 사이트에서 제공된 치트 시트를 사용하여 정규 표현식을 작성할 수 있습니다. 가이드로 사용하고 텍스트를 붙여 넣어 테스트 해보세요. 일치하는 항목이 텍스트에서 강조 표시되고 일치 항목 수가 표시됩니다. 정규식은 색상으로 구분되어 있으며 편리한 도구 설명은 각 문자를 마우스로 가리킬 때 수행하는 작업을 설명합니다. 정규식을 사용하여 정규식을 학습하는 데 유용합니다.

Google 문서 및 Google 스프레드 시트에서 정규식 사용

이러한 G Suite 앱에서 Regex를 사용하는 것은 간단하고 사용자 친화적입니다. Ctrl + F를 누른 다음 브라우저의 왼쪽 상단에 표시되는 검색 창에서 세 개의 수직 점을 클릭하면됩니다. 또는 드롭 다운 메뉴에서 수정-> 찾기 및 바꾸기 로 이동하십시오. 찾기 및 바꾸기 창이 열립니다. 여기에서 정규식을 사용하여 일치 (문서) 또는 정규식을 사용하여 검색 (시트) 확인란을 찾을 수 있습니다. 선택한 후에는 정규 표현식을 찾기 입력란에 붙여 넣을 수 있습니다. 문서에서 일치하는 항목이 강조 표시되고 일치 항목 수가 찾기 입력란에 표시됩니다. 대소 문자 일치 와 같은 사용 가능한 다른 찾기 및 바꾸기 옵션을 계속 사용할 수 있으며 이에 따라 정규식이 작동합니다.

MS Word 및 Excel에서 “정규식”(와일드 카드) 사용

안타깝게도 Word 및 Excel에서는 정규식이 지원되지 않습니다. 그러나 사용되는 기호가 때때로 다르지만 거의 동일한 방식으로 작동하는 “와일드 카드”를 허용합니다.

Word에서는 고급 찾기 및 바꾸기 기능을 사용하여 와일드 카드를 사용하여 검색 할 수 있습니다. 이 기능으로 이동하는 방법, 와일드 카드 사용 방법 및 각 와일드 카드 문자의 기능에 대한 자세한 내용은 Office 지원 웹 사이트에서 제공되는 이 가이드 에서 찾을 수 있습니다.

Excel에서는 검색 기능의 일부가 아니므로 와일드 카드를 사용하여 검색하는 방법이 즉시 명확하지 않습니다. 그러나 고급 필터를 사용하여 시트를 필터링하면 와일드 카드가 포함 된 검색 구문과 일치하는 셀을 찾을 수 있습니다. “와일드 카드 기준”에서 고급 필터의 일부로 와일드 카드를 사용하는 방법을 찾을 수있는 Office 지원 웹 사이트의 이 가이드 를 따르세요.

Excel에서 고급 필터에 액세스 할 수있는 위치, 와일드 카드 사용을 허용하는 위치

Python에서 정규식 사용

re 라이브러리는 기본 Python 설치의 일부로 제공됩니다. 이 라이브러리는 정규 표현식을 사용하여 문자열을 분석하고 조작 할 수있는 많은 함수를 제공합니다.

몇 가지 주요 함수는 다음과 같습니다.

  • re.search ( 패턴, 문자열, 플래그 = 0 ) : 문자열 에서 패턴 (정규 표현식)이 일치하는 첫 번째 위치를 찾아 일치 개체를 반환합니다. 일치를 설명하거나 일치하는 항목이 없으면 없음입니다.
  • re.match ( pattern , string, flags = 0 ) : re.search와 동일하게 작동합니다. (), 문자열
  • re.split ( 패턴, 문자열, 플래그 = 0 ) : 분할 string pattern 은 str.split () 메서드와 비슷하지만 정규식을 사용합니다.
  • re.sub ( pattern, repl, string, count = 0, flags = 0 ) : 문자열 패턴 repl, repl 이 문자열 인 경우 또는 repl repl 이 단일 일치 개체를 인수로 사용하는 함수 인 경우

flags 매개 변수는 이에 따라 정규식 패턴의 동작을 수정하는 re.IGNORECASE 와 같은 플래그를 지정할 수 있습니다.

python에서 정규식 패턴을 문자열로 작성할 때 원시 문자열을 사용하면 이스케이프 할 필요없이 “\”와 같은 특수 문자를 사용할 수 있으므로 유용합니다. 예를 들면 다음과 같습니다.

  • pattern =“\\ bsk (y | ies) \\ b”

사용 :

  • 패턴 = r”\ bsk (y | ies) \ b”
긍정적 인 lookbehind로 정규식 사용을 보여주는 re 문서의 예

re 라이브러리는 여기에서 찾을 수 있습니다. https://docs.python.org/3/library/re.html # module-re

Happy Matching !!

보시다시피 정규 표현식은 텍스트 작업을 할 때 많은 작업을 훨씬 더 쉽게 만들 수 있습니다. 특수 문자 몇 개만 배우더라도 찾기 및 바꾸기 도구를 매우 많이 사용할 수 있습니다. 많은 워드 프로세서와 텍스트 편집기는 그 유용성을 인식하고 정규 표현식에 대한 지원을 허용했거나 유사한 기능을 제공하는 자체 기능을 구현했습니다. 정규 표현식에 대한 친숙 함은 작가, 소프트웨어 개발자 또는 텍스트를 자주 분석하는 모든 사람을위한 도구 키트의 편리한 도구입니다.

AI Palette 은 FMCG 회사의 제품 혁신을 지원합니다. 우리는 인공 지능 & 머신 러닝을 사용하여 FMCG 회사가 소비자가이기는 제품을 만들 수 있도록 지원합니다.