https://moonsupport.tistory.com/173 의 다음편
Lesson 11
Task | Text | Capture Groups |
Capture | file_record_transcript.pdf | file_record_transcript |
Capture | file_07241999.pdf | file_07241999 |
Skip | testfile_fake.pdf.tmp |
답 : ([a-z+\_?].+)\.pdf$
( )는 안의 내용을 하나의 묶음(Capture Groups)으로 만든다.
Lesson 12
Task | Text | Capture Groups |
Capture | Jan 1987 | [Jan 1987] [1987] |
Capture | May 1969 | [May 1969] [1969] |
Capture | Aug 2011 | [Aug 2011] [2011] |
답 : ([A-z\s]+(\d+))
괄호는 괄호를 품을 수 있음
Lesson 13
Task | Text | Capture Groups |
Capture | 1280x720 | 1280 720 |
Capture | 1920x1600 | 1920 1600 |
Capture | 1024x768 | 1024 768 |
답 : (.+)x(.+)
설명 생략
Lesson 14
Task | Text |
Match | I love cats |
Match | I love dogs |
Skip | I love logs |
Skip | I love cogs |
답 : cat|dog
| (or 기호)를 넣으면 두 문자중 하나를 포함한다.
Lesson 15
Task | Text |
Match | The quick brown fox jumps over the lazy dog. |
Match | There were 614 instances of students getting 90.0% or above. |
Match | The FCC had to censor the network for saying &$#*@!. |
15번은 정답이 따로 없기 때문에, 아래 예시를 보며 공부하길 바란다.
\w는 [A-Za-z0-9]와 같이 모든 문자와 숫자를 의미한다.
\b는 공백과 문자사이, 문자와 공백사이의 위치를 의미한다.
첫번째 줄을 예시로 들면
|The| |quick| |brown| |fox| |jumps| |over| |the| |lazy| |dog|.
빨간 막대는 \b로 선택된 자리
초록 칸은 .(모든 문자)를 의미한다.
헷갈리지 말아야 할 것은
[]안에 ^가 들어갈 수 있는 자리는 첫번째 자리뿐이며,
^가 들어가면 모든 조건이 부정이 된다.
Problem1
Task | Text |
Match | 3.14529 |
Match | -255.34 |
Match | 128 |
Match | 1.9e10 |
Match | 123,340.00 |
Skip | 720p |
정답 : .*[^\D]$
맨뒤의 문자가 숫자인 경우를 찾는다.
Problem 2
Task | Text | Capture Groups |
Capture | 415-555-1234 | 415 |
Capture | 650-555-2345 | 650 |
Capture | (416)555-3456 | 416 |
Capture | 202 555 4567 | 202 |
Capture | 4035555678 | 403 |
Capture | 1 416 555 9292 | 416 |
정답 : (\d{3})
전화번호 앞자리를 찾는데 사용한다고 한다.
Task | Text | Capture Groups |
Capture | tom@hogwarts.com | tom |
Capture | tom.riddle@hogwarts.com | tom.riddle |
Capture | tom.riddle+regexone@hogwarts.com | tom.riddle |
Capture | tom@hogwarts.eu.com | tom |
Capture | potter@hogwarts.com | potter |
Capture | harry@hogwarts.com | harry |
Capture | hermione+regexone@hogwarts.com | hermione |
정답 : ([\w]+\.*[A-z]*) 혹은 ([A-z.]*)
Problem 4
Task | Text | Capture Groups |
Capture | <a>This is a link</a> | a |
Capture | <a href='https://regexone.com'>Link | a |
Capture | <div class='test_style'>Test</div> | div |
Capture | <div>Hello <span>world</span></div> | div |
정답 : <(\w*)
하나씩 따져보자
< = <
(/)? = / 가 1개 있거나 없거나 (닫히는 태그를 위해)
([a-zA-z]*) = 태그명
(
\s = 공백
[a-Z]* = HTML속성
= = 속성에 값을 할당하기 위한 equal
[^>]* = 닫히는 태그가 아닌 값들을 전부 받음(속성 할당 값)
)? = (속성을 할당하는 태그를 위한 코드)
(\s)* = 태그의 불필요한 공백을 잡기 위함
(/)? = (열자마자 닫히는 태그를 잡기 위한 코드)
안에서 부터 하나씩 살펴보자
[^>]+ = 닫히는 태그가 아닌 값들을 전부 받음(속성 할당 값)
<([^>]+)> 그 값들 중 < > 에 둘러쌓인 값
하지만 < 한글 > 과 같은 값도 들어가게 된다.
Problem 5
Task | Text | Capture Groups |
Skip | .bash_profile | |
Skip | workspace.doc | |
Capture | img0912.jpg | [img0912] [jpg] |
Capture | updated_img0912.png | [updated_img0912] [png] |
Skip | documentation.html | |
Capture | favicon.gif | [favicon] [gif] |
Skip | img0912.jpg.tmp | |
Skip | access.lock |
답 : (\w*).(jpg)$|(\w*).(png)$|(\w*).(gif)$
Task | Text | Capture Groups |
Capture | The quick brown fox... | The quick brown fox... |
Capture | jumps over the lazy dog. | jumps over the lazy dog. |
답 : ([^\s].*)$
Problem 6
Task | Text | Capture Groups |
Skip | W/dalvikvm( 1553): threadid=1: uncaught exception | |
Skip | E/( 1553): FATAL EXCEPTION: main | |
Skip | E/( 1553): java.lang.StringIndexOutOfBoundsException | |
Capture | E/( 1553): at widget.List.makeView(ListView.java:1727) | [makeViewList] [View.java] [1727] |
Capture | E/( 1553): at widget.List.fillDown(ListView.java:652) | [fillDown] [ListView.java] [652] |
Capture | E/( 1553): at widget.List.fillFrom(ListView.java:709) | [fillFrom] [ListView.java] [709] |
답 : \.([^.]*)\(([^\(]*):(\d*)\)$
Problem 8
Task | Text | Capture Groups |
Capture | ftp://file_server.com:21/top_secret/life_changing_plans.pdf | ftpfile_server.com21 |
Capture | https://regexone.com/lesson/introduction#section | httpsregexone.com |
Capture | file://localhost:4040/zip_file | file localhost4040 |
Capture | https://s3cur3-server.com:9999/ | httpss3cur3-server.com9999 |
Capture | market://search/angry%20birds | market search |
정답 : ([A-z]*):\/\/(.*com|[A-z]*|):?(\d*)?
([A-z]*) 알파벳
:\/\/ 주소 형식
(.*com|[A-z]*|) .com으로 끝나거나, 그냥 끝남 (.*com은 없어도 무방하다)
:?(\d*)? 포트 번호가 있다면 처리한다.
끝이다아아아아아아
'기타 > Regular expression' 카테고리의 다른 글
[Regex] RegexOne 사이트 문제 풀이와 학습(1) (0) | 2019.04.10 |
---|