hyperskill - Regular expression 영어 원문
텍스트 데이터를 조작하는 것은 프로그래밍과 실생활에서 꽤 유명한 작업입니다.
예를 들어, 우리는 종종 텍스트를 분석해야 할 수 있으며,
지정한 모든 문자열들을 파일에서 찾으며, 등등이 있습니다.
텍스트 데이터를 처리하는 것은 꽤 도전적인 문제입니다.
그래서 정규표현식 (regular expressions) 이라는 도구가 이를 쉽고 빠르게 만들어 줍니다.
Why regular expressions? - 왜 정규표현식인가?
regular expression (regex or regexp) 은,
문자열의 집합에 대한 공통적인 패턴을 묘사하는 문자의 시퀀스입니다.
이러한 패턴들은 검색, 수정, 그리고 텍스트 조작에 사용될 수 있습니다.
또한 전체 문자열 혹은 하위 문자열이 주어진 패턴과 일치하는지,
혹은 하위 문자열이 다른 문자열로 재배치되었는지 확인 할 수 있습니다.
이러한 패턴들은 언제 필요할까요?
우리가 똑같은 확장자(.pdf
와 같은) 를 가진 모든 파일들을 얻고 싶거나,
혹은 서로 다른 형태 내부의 특정 이름의 모든 항목들을 추출하고 싶거나(Edgar Poe, Edgar Allan Poe, E. A. Poe, 등등),
모든 이메일 주소, 혹은 심지어 날짜로 표기된 모든 수학적 구조들을 찾고 싶다고 말해 봅시다.
정규 표현식(regexps) 와 함께라면, 이러한 작업들은 한 줄 로 완료 할 수 있습니다.
이러한 패턴들은 어떻게 보이나요?
처음에는 아마 보기에 혼동스러울 겁니다.
예시로, \d+(\.\d)?
혹은 [a-zA-Z]
를 들 수 있습니다.
그리고 이러한 표현은 종종 깁니다.
그래도, 기초와 함께 시작 해 봅시다.
Regexps(정규 표현식)은 대부분의 프로그래밍 언어들을 지원하는 하위언어의 유형으로 간주될 수 있지만,
"flavors" 라는 구문에는 몇 가지 차이점이 있습니다.
이번 주제에서는, 우리는 정규 표현식의 일반적인 아이디어를 이해하기 위해서,
regexps(정규 표현식)을 프로그래밍 언어들에서 독립적으로 고려 할 겁니다.
이번 주제를 배우는 동안, 우리의 예제를 직접 테스트 하기 위해 regexp 사이트 에 방문 할 수 있습니다.
들어간다면, PCRE 를 flavor 로 고르세요.
이는 실제로 가장 평범한 표준인 Perl Compatible Regular Expressions 의 약자를 의미합니다.
Matching on exmples: more PARKS
예제에서 매칭해보기: 더 많은 PARK
어떻게 매칭이 공식적으로 작동되는지 탐색 해 봅시다.
정규 표현식 패턴이 특별한 의미를 가진 문자들을 담고 있는 꽤 어려운 표현식이 될 수 있음에도 불구하고,
가장 간단한 정규 표현식은 그저 간단한 문자들의 문자열입니다.
단어들의 집합이 있다고 가정 해 봅시다 : (PARK, SPARK, PARKING, MARK, QUARKS)
당신은 이러한 단어 중 어떠한 것이 PARK 라는 단어를 담고 있는지 확인해야 합니다.
예를들어, 당신이 웹 페이지에서 Ctrl + F
로 검색을 수행 할 때 일어나는 일입니다.
우리는 PARK 패턴을 사용해서 이러한 문제를 쉽게 해결 할 수 있습니다.
이러한 패턴은 단어 안의 P, A, R, K 라는 단어가
검색할 단어 내에서 왼쪽에서 오른쪽까지 각각의 심볼들이 반드시 따라야 한다 라는 의미입니다.
검색되는 단어에서 왼쪽에서 오른쪽 검색을 할 때, P, A, R, K 심볼이 일치해야 한다는 것이다.
우리는 단어의 어떠한 부분에서 이러한 패턴과 일치한다면, 전체적인 단어가 패턴과 일치한다고 가정 할 수 있습니다.
검색된 단어에서 패턴이 일치한다면, 이 단어는 패턴과 일치한다고 말할 수 있다. 라는 의미
Pattern - 패턴
P | A | R | K | 패턴 | ||||
---|---|---|---|---|---|---|---|---|
P | A | R | K | 일치 | ||||
S | P | A | R | K | 일치 | |||
P | A | R | K | I | N | G | 일치 | |
M | A | R | K | 불일치 | ||||
Q | U | A | R | K | S | 불일치 |
- 단어
PARK
는 우리의 패턴에 정확하게 일치합니다. - 단어
SPARK
는 알맞은 하위문자열을 가지기 때문에 패턴과 일치합니다. - 단어
PARKING
은 위의 이유와 동일하기 때문에 패턴과 일치합니다. - 단어
MARK
는M
이라는 문자 때문에 패턴에 일치하지 않습니다. - 단어
QUARKS
는PARK
와 일치하는 알맞은 부분을 가지고 있지 않기 때문에 패턴과 일치하지 않습니다.
요약하여, 오로지 세 개의 단어만 PARK
패턴과 일치합니다.
정규 표현식에서는, 문자들의 대소문자는 연관되어 있습니다 :
park
는 PARK
와 동일하지 않으므로, 즉, 이들은 일치하지 않습니다.
게다가 한번 PAKR
이라는 또다른 문자들의 순열을 고려 해 봅시다.
두 가지 문자의 순서가 잘못되었기 때문에, 우리의 패턴과 일치하지 않습니다.
The power of regular expressions - 정규표현식의 힘
하위 문자열을 찾는 것은 아주 인상적이지는 않습니다.
정규 표현식의 진실된 힘은 당신이 wildcard(와일드카드) 라고 부르는 특별한 메타문자를 사용하기 시작 할 때 옵니다.
와일드카드는 패턴을 정의하게 해 주므로,
당신은 완전히 동일한 문자열의 시퀀스를 포함하지 않는 문자열들을 일치시킬 수 있습니다.
당신은 문자열에서 몇 가지 문자들을 스킵할 수 있거나,
동일한 포지션에서 서로 다른 문자들을 일치시키거나,
심지어는 여러번 반복되는 문자를 일치시킬 수 있습니다.
두 가지의 가장 간단한 와일드카드를 소개하겠습니다. : Dot(.
), Question mark(?
)
The dot character - 와일드카드 "점" 문자
dot(점 문자 .
) 는 문자, 숫자, 등등을 포함하는 모든 단일 문자들을 일치시킵니다.
하지만, 개행 문자는 직접 지정되지 않는다면 개행 문자를 제외합니다.
몇 가지 추가적인 단어와 함께, 이전 예제를 다시 봅시다.
이전 예제에서 당신이 기억하듯이, 두 가지 단어가 하나의 문자가 알맞지 않았기 때문에 일치하지 않았습니다.
이들을 고려하며, 두 가지 추가적인 단어를 고려 해 봅시다.
여기 점.
문자를 포함한 새로운 패턴 .ARK
가 있습니다.
이러한 패턴은 "ARK
를 따르는 어떠한 문자든 여기에 있다" 라고 말합니다.
Pattern .ARK
. | A | R | K | 패턴 | ||
---|---|---|---|---|---|---|
M | A | R | K | 일치 | ||
Q | U | A | R | K | S | 일치 |
W | A | R | M | 불일치 | ||
A | R | K | 불일치 |
좋습니다! MARK
와 QUARKS
두 단어가 새로운 패턴과 일치합니다!
하지만 WARM
이라는 단어는 일치하지 않습니다.
잠깐 생각 해 봅시다, 어떻게 이를 고칠까요?
Tip : 정답은 .AR.
패턴을 사용하는 겁니다.
이러한 패턴은 WARM
, CLARA
, PART
등등이 일치합니다.
ARK
라는 단어 또한 우리의 패턴과 일치하지 않는데,
이 단어가 .
패턴에 해당하는 위치에 문자를 가지고 있지 않기 때문입니다.
.
패턴은 해당 위치에 문자를 가지고 있어야 합니다.
The Question mark - 물음표 "?" 와일드카드
question mark(물음표)?
는 "선행 문자가 있거나, 아무것도 없다" 를 의미하는 특별한 문자입니다.
물음표?
시그널은 선행 문자가 패턴에 일치하기 위해 문자열 내에서 한 번, 혹은 0번 발생한다는 문자입니다.
ye?s
는ys
와yes
와 일치한다.e
라는 선행 문자가 1번 혹은 0번 나타난다는 의미이다.
언제 우리가 이를 사용할 수 있을까요?
아마도 당신이 이 예제를 본다면, 당신은 마침내 regexps(정규표현식)의 마법을 느끼기 시작 할 겁니다.
영국과 미국 스펠링(철자) 간의 차이점을 고려 해 보세요.
상상해 보건대, 우리가 몇 개의 출판물 저장소에서 색맥에 대해 언급한 모든 논문들을 찾으려 한다고 가정 해 봅시다.
하지만, 이러한 논문들은 서로 다른 내용들을 담고 있으며, 그들의 철자는 아마 다를 겁니다.
우리가 찾아야 하는 단어는 무엇일까요?
정답은 둘 다 입니다!
colou?r
패턴은 colour
과 color
문자열과 일치 하지만,
coloor
문자열과는 일치하지 않습니다.
또한 게다가 이는 대문자 Color
과 일치하기 위한 가능성을 포함할 가능성이 있습니다.
우리는 나중에 이를 어떻게 수행하는지 배울 겁니다.
이전 예제로 돌아 가 봅시다.
ARK
단어는 .ARK
패턴과 일치하지 않습니다.
하지만 만약 우리가 ?
를 .
문자 이후에 추가한다면(.?ARK
),
이제 단어 ARK
는 새로운 패턴과 일치하게 되는데,
첫 번째 문자(.
) 가 이제 선택이 되었기 때문입니다.
우리가 콤비네이션(결합) .?
내에서 서로 다른 와일드카드들을 결합한 파워를 참고하세요.
.?
라는 와일드카드 두 개를 합친 것으로 정말 많은 경우의 수를 만들 수 있다는 것이다.
이는 정규 표현식의 기본 아이디어이기도 합니다.
Conclusion - 결론
Regexps(정규 표현식)은 특정 패턴에 의해 일치하는 문자열들을 찾게 해 줍니다.
정규 표현식은 그들의 문자 해석 속에서 간단한 문자들과 함께 특별한 의미를 지니는 특별한 문자들을 사용합니다.
.
문자는 개행 문자인\n
을 제외하고 모든 단일 문자와 일치합니다.
?
문자는 "?
바로 이전의 문자가 문자열로부터 없을 수도 있다는 것" 을 의미합니다.
- 정규 표현식은 대소문자에 민감합니다.
우리는 당신이 정규표현식이 문자열과 텍스트를 처리하는 것을 위한 강력한 도구를 제공한다는 것을 보았길 빕니다.
words to remember
manipulate : 조작하다
entry : 항목
substantially : 대체로
though : 그렇지만, 그래도, 지만, ~이지만, 비록 ~일지라도
publications : 출판물, 출판, 발행
vary : 달라지다, 다르다, 바꾸다, 변주 하다
interpretation : 해석
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
Using external workflows - 외부 워크플로우 사용하기 (0) | 2024.07.30 |
---|---|
Running a "hello world" action - GitHub action 기초 (0) | 2024.07.27 |
File types - 파일 유형 (0) | 2024.07.25 |
Introduction to GitHub actions- 깃헙 액션 소개 및 기초 (3) | 2024.07.24 |
Introduction to CI/CD - CI/CD 소개와 의미 (0) | 2024.07.23 |