본문 바로가기

기타/Regular expression

[Regex] RegexOne 사이트 문제 풀이와 학습(1)

https://regexone.com/

 

RegexOne - Learn Regular Expressions - Lesson 1: An Introduction, and the ABCs

Regular expressions are extremely useful in extracting information from text such as code, log files, spreadsheets, or even documents. And while there is a lot of theory behind formal languages, the following lessons and examples will explore the more prac

regexone.com

해당 사이트에는 정규표현식을 학습하기 위한 문제들이 준비되어 있다.

문제를 풀면서 정규표현식을 공부해보자

처음 연습이라면, 위 페이지를 펼쳐놓고 풀어보시길 권해드립니다.

 

Lesson 1

Task Text
Match abcdefg
Match abcde
Match abc

정답 : abc

 

다른 어떠한 패턴 없이 문자를 입력하게 되면 문자열에 포함된 문자가 모두 Match되어진다.

< a를 모두 찾아낸다. >

Lesson 1- 2

Task Text
Match abc123xyz
Match define "123"
Match var g = 123;

정답 : 123 혹은 \d{3}

 

123은 Lesson1과 같은 원리로 123을 찾아낸다.

\d는 숫자를(digital) 찾아낸다.

{N}는 앞의 조건이 연속적으로 N개 이상 맞는 경우를 찾아낸다.

< 숫자를 모두 찾아 낸다. >
< 2번 연속된 숫자만 찾아낸다. >

Lesson 2

Task Text
Match cat.
Match 896.
Match ?=+.
Skip abc1

정답 : \.

. 은 모든 문자열 단 하나를 뜻한다.

그렇기 때문에 그냥 .을 하게 되면 Text의 모든 글자의 첫글자가 Match된다.

문자열에 .을 찾기 위해선

\(이스케이프) 후에 .을 하여, 순수하게 .을 문자열에서 찾는 방법을 택해야 한다.

< .을 통해 문자열 단 하나가 선택된 모습 >
< 이스케이프를 통해 .을 매치시킨다 >

Lesson3

Task Text
Match can
Match man
Match fan
Skip dan
Skip ran
Skip pan

정답 : [cmf]

[ ]는 안에 있는 문자 하나 하나를 비교하여 Match시킨다.

< [ ]를 통해서 c 혹은 m혹은 f를 찾는다 >
< [ ]를 사용하지 않는다면 연속된 문자로 인식한다. >

더 정확한 정답은 다음과 같다.

< 좀 더 정확한 정답>

좀 더 정확한 정답 : [cmf]를 통해 c 또는 m 또는 f를 찾고 +를 통해 그 이후에 an을 가지는 문자열을 찾는다.

 

Lesson 4

Task Text
Match hog
Match dog
Skip bog

정답 : [^bog]

^는 [ ]안에서는 OR의 부정으로 쓰인다. 예시에서는 b또는 o또는 g가 포함되지 않는것의 의미로 사용된다.

추가로 ^ 밖에 있다면 ^이후의 문자로 시작한다는 의미이다.

<b 혹은 o혹은 g는 선택되지 않았다>
< b를 포함하지 않는 단어 뒤에 og가 있는 문자열을 찾는다 >

Lesson 5

Task Text
Match Ana
Match Bob
Match Cpc
Skip aax
Skip bby
Skip ccz

정답 [A-Z]

-는 [ ]안에서 범위를 나타낸다. 문제에선 대문자가 하나라도 포함된 것을 매치시킨다.

< 대문자들을 일치시킨다.  >
< 대문자들을 일치시키고 그 이후에 소문자가 2번 연속된 문자를 일치시킨다.  >

Lesson 6

Task Text
Match wazzzzzup
Match wazzzup
Skip wazup

정답 : z{2}

z가 둘 이상 있기만 하면 조건을 만족한다.

 

                                                   < z가 두개 연속인 문자를 Match시킨다. >                                                         < 첫번째 예시같은 경우 zz가 연속인 문자가 두번 있기 때문에 다음과 같이 선택되었다. >
< wa 이후 z가 3개이상 5개이하 이후 up를 포함하는 문자열을 매치시킨다. >

Lesson 7

Task Text
Match aaaabcc
Match aabbbbc
Match aacc
Skip a

 정답 : ab*c

*앞에 있는 문자는 0개이상 있는 것을 선택한다. 예제에선 ab(n개 이상)c 혹은 ac를 매치한다.

참고로 +앞에 있는 문자는 1개 이상 있는 것을 선택한다.

<a b가 0개이상 c로 된 문자열을 매치한다 >
< aa가 1개 이상 b가 0개 이상 c가 1개이상인 문자열을 매치시킨다 >

Lesson 8

Task Text
Match 1 file found?
Match 2 files found?
Match 24 files found?
Skip No files found.

정답 : \d+\sfiles?\sfound\?

?는 앞의 문자가 없거나 하나 있을수 있다.

< 숫자가 1개이상있고, 이후에 공백이 존재하고, 이후에 file이 있고, 이후에 ?가 0개 또는 1개 있고, 이후에 공백이 존재하고,   이후에 found가 존재하고, 이후에 문자 ?가 존재하는 문자 매치>
< 숫자가 1개 이상 있고,이후에 스페이스가 존재하고, 이후에 f/i/l/e/s들이 하나이상 존재하고, ... 이후 생략 >  

Lesson 9

Task Text
Match 1. abc
Match 2. abc
Match 3. abc
Skip 4.abc

답 : \s

\s는 문자열에 공백을 매치시킨다.

< \s는 모든 공백을 찾는다. >
< 다른 답 >
<다른 답 2>

Lesson 10

Task Text
Match Mission: successful
Skip Last Mission: unsuccessful
Skip Next Mission: successful upon capture of target

답 : ^M.+l$

^은 뒤에 문자부터 시작하는 문자를 찾는다.

$은 앞의 문자로 끝나는 문자를 찾는다.

문제에선 M으로 시작하고 여러문자가 있거나 없고 l로 끝나는 문자를 찾는다.

< M으로 시작하고 사이에 어떤 문자든 받으며 l로 끝나는 문자 >
< L로 시작했기 때문에 선택되지 않았다. >
< N으로 시작하고 더군다나 t로 끝난다 >

 

'기타 > Regular expression' 카테고리의 다른 글

[Regex] RegexOne 사이트 문제 풀이와 학습(2)  (0) 2019.04.10