More Related Content
PDF
์ ๊ทํํ์ Regular expression (regex) PDF
์ ๊ทํํ์(Regular expressions) PDF
Python3 10์ฅ ๋ฌธ์์ด์ด์ผ๊ธฐ PPT
แแ
ฅแผแแ
ฒแแ
ญแแ
งแซแแ
ตแจ์ ์ดํด์ ํ์ฉ PPTX
แแ
กแแ
ตแแ
ฅแซ+แแ
ฅแผแแ
ฒแแ
ญแแ
งแซแแ
ตแจ+แแ
ตแแ
ขแแ
กแแ
ต 20160301 PDF
์ด๋ณด์๋ฅผ ์ํ ์ ๊ท ํํ์ ๊ฐ์ด๋ (์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ค) PPT
PDF
6์ฅ ํํ์ ๋ฐ ๋ฌธ์ฅ What's hot
PPTX
PPTX
PPTX
PDF
์ค์นผ๋ผ์ ์คํํฌ ์ํผ์ ๋์ค PPTX
ํฌ์ธํฐ์๊ธฐ์ด (2) - ํฌ์ธํฐ ์ฌ์ฉํ๊ธฐ1 PPTX
PDF
PPTX
The C++ Programming Language 5์ฅ ํฌ์ธํฐ, ๋ฐฐ์ด, ๊ตฌ์กฐ์ฒด PPT
Erlangแแ
ณแฏ แแ
ตแแ
ญแผแแ
กแซ swap แแ
ฅแแ
ฅ PPTX
PPTX
PPTX
PDF
PDF
PDF
04์ฅ แแ
ฉแแ
ณแธแแ
งแซแแ
ฎ แแ
กแแ
ญแผ PDF
1.3แแ
กแผ แแ
กแแ
ฎ แแ
ฉแแแ
ณแซ แแ
ณแ
แ
ฉแแ
ตแแ
ฅ(higher order procedure)แ
แ
ฉ แแ
ญแแ
ฃแจแแ
กแแ
ณแซ แแ
กแผแแ
ฅแธ PDF
PPT
PDF
PDF
๊ตฌ๋ฌธ๊ณผ ์๋ฏธ๋ก (์ ์ ์๋ฏธ๋ก ๊น์ง) Similar to Regex
PDF
์คํ์์คSW๊ธฐ์ด_7_๋ฆฌ๋
์ค ๊ธฐ์ด ๋ช
๋ น์ด 3 (2).pdfdfddfffffffffff PDF
PyCon APAC 2016 Regular Expression[A-Z]+ PDF
แแ
ฅแผแแ
ฒ แแ
ญแแ
งแซแแ
ตแจ แแ
ตแแ
ฉแซ แแ
ฆแแ
กแแ
ฎแซแแ
ก แแ
ญแแ
ฃแจ PDF
PDF
PPTX
PDF
PDF
[แแ
ฎแแ
ณแแ
ณแแ
ขแทแแ
ณ Tech talk] แแ
ฌแแ
งแผแแ
ณแซ 80x24 แแ
ณแแ
ตแแ
ด แแ
ฆแแ
จแ
แ
ฉ PPTX
PDF
afdssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss PDF
KPW2012 ์กฐ๊ธ ๊น์ด ๋ค์ฌ๋ค๋ณด๋ ์ ๊ทํํ์ PDF
๋ธ๋ผ์ง๋ฆฌ์ธ์์ฑ,๋นํค๋์์ฑ ์์ฑ๊ด๋ฆฌ๋ฒ,์์ฑ์ฃผ์์ฌํญ,์์ฑ์ ํ์ถ์ฒํ๋ ๋ฐฉ๋ฒ์์ PPTX
PDF
[๊ฐ๋ฆ์์ฃผ๋ ๋๊ธฐํ๊ฒฝ๊ณผํ๊ณผ] ๋๊ธฐ๊ณผํ์ ์ฐ์
๋ฌธ ์ค๋ช
์ PDF
Hackerschool FTZ ๋ฌธ์ ํ์ด PDF
[NEXT ํ์ฐ Week2] UNIX ๋ช
๋ น์ด ๊ฐ๋จํ๊ฒ ์ดํด๋ณด๊ธฐ PDF
[octoberskyjs] Regular Expression PDF
PDF
[ ๋ฆฌ๋
์ค ๋ง์คํฐ 2๊ธ - 1์ผ์ฐจ ] ๊ธฐ์ด ๋ช
๋ น์ด๊ฐ ๋ญํ๋ ๋์ธ์ง ์์๋ณด์. PDF
[IoT] MAKE with Open H/W + Node.JS - 2nd More from Kangwook Lee
PPTX
๋น
๋ฐ์ดํฐ์ ๋ฌธ๊ฐ๊ต์ก 3ํ๊ธฐ 1 PPTX
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
PDF
๋น
๋ฐ์ดํฐ ๋ถ์ํ์ฉ ๊ฐ์ด๋ (1) PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
Regex
- 1.
Preface
๏ถ RegularExpression (์ ๊ทํํ์)์ ์ฝ์นญ REGEX
๏ถ string pattern์ ๋ฌธ์์ด์ ์กฐํฉ๋๋ ๊ท์น
๏ถ meta charater๋ ๋ค๋ฅธ ์๋ฏธ๋ฅผ ์์ํ๋ ๋ฌธ์
๏ถ grep์ ์ ๊ท์์ ํ๊ฐํ ์ ์๋ ์ ํธ๋ฆฌํฐ์
๋๋ค.
๏ต egrep, fgrep์ grep์ ํนํ๋ ๋ฒ์ ์
๋๋ค.
๏ถ sed๋ ์คํธ๋ฆผ ์๋ํฐ์
๋๋ค.
๏ถ awk๋ ํจํด์์ ๋ค๋ฃฐ ์ ์๋ ์ธ์ดํด์
๋๋ค.
- 2.
what is StringPattern?
๏ถ ์กฐํฉ๋ ๋ฌธ์์ด์ ๊ท์น
๏ต e-mail ์ฃผ์
๏ ์ค๊ฐ์ @ ๋ฌธ์๊ฐ ๋ฑ์ฅ
๏ @ ๋ฌธ์์ ์ค๋ฅธ์ชฝ์ dot ์ ์๋ฌธ, ์์คํค์ฝ๋๋ก ์ด๋ฃจ์ด์ง
๏ @ ๋ฌธ์์ ์ผ์ชฝ์ ๊ณ์ ๋ช
๏ต Web URL
๏ http:// ์ผ๋ก ์์
๏ ํธ์คํธ์ด๋ฆ๋ค์๋ URI ๊ฐ ๋ถ๊ณ ๋๋ ํ ๋ฆฌ๊ตฌ์กฐ๋ก ๋ช
๋ช
๏ CGI ๊ธฐ๋ฒ์ด ์ฌ์ฉ๋ ๊ฒฝ์ฐ์ ? ์ด ๋ฑ์ฅํ ์๋ ์์
- 3.
Regular Expression :Examples
a.cdef?
[a-zA-Z]+
.*boy
(caret|dalar)
(.*/)[^/]*
^Do.*?$
http://([a-zA-Z0-9.-])/.*
http://.*?(.*)
REGEX๋ฅผ ๋ฐฐ์ด ๋ค์ ํด์ํด๋ด
์๋ค!
- 4.
POSIX regex: metachar.
๋ฌธ์ ์ง์ . ์์์ ๋ฌธ์ ํ ๊ฐ๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ฐ๋ณต ์ง์
? ์ ํ๋ฌธ์ํจํด์ด 0๊ฐ ํน์ 1๊ฐ ๋ํ๋ฉ๋๋ค. - ERE
+ ์ ํ๋ฌธ์ํจํด์ด 1๊ฐ ์ด์ ๋ฐ๋ณต๋ฉ๋๋ค. - ERE
* ์ ํ๋ฌธ์ํจํด์ด 0๊ฐ ์ด์ ๋ฐ๋ณต๋ฉ๋๋ค.
{...}
(interval) ๋ฐ๋ณต์๋ฅผ ์ง์ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด
{3} : 3๋ฒ ๋ฐ๋ณต {,7} : 7๋ฒ ์ดํ {2,5} : 2~5๋ฒ ๋ฐ๋ณต
์์น์ง์
^ ๋ผ์ธ์ ์๋ถ๋ถ์ ์๋ฏธํฉ๋๋ค.
$ ๋ผ์ธ์ ๋๋ถ๋ถ์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ฃน ์ง์
[...] ์์ ์ง์ ๋ ๋ฌธ์๋ค ๊ทธ๋ฃน ์ค์ ํ ๋ฌธ์๋ฅผ ์ง์ ํฉ๋๋ค.
[^...] ์์ ์ง์ ๋ ๊ทธ๋ฃน์ ๋ฌธ์๋ฅผ ์ ์ธํ ๋๋จธ์ง(์ฌ์งํฉ)๋ฅผ ์ง์ ํฉ๋๋ค.
๊ธฐํ
(escape) ๋ฉํ์ ์๋ฏธ๋ฅผ ์์ ์ค๋๋ค.
| (alternation) OR์ฐ์ฐ์ ํฉ๋๋ค. - ERE
( ) ๊ดํธ๋ ํจํด์ ๊ทธ๋ฃนํ ๋ฐ ๋ฐฑ๋ ํผ๋ฐ์ค์ ์๋์ ํฉ๋๋ค.
* POSIX RE - IEEE std 1003.1 (International standard)
* ERE - Extended Regular Expression
- 5.
applying pattern
๏ถdot/period : . - any single character
๏ต c.b : cab, cbb, ccb, cdb, c1b, c2b ๋ฑ๋ฑ
๏ต a..b : axyb, a12b, ax0b, a#-b ๋ฑ๋ฑ
๏ต a.........b : ์ด๋ฐ ๋ฐฉ์์ผ๋ก๋ ์ฐ์ง ์๋๋ค.
- 6.
applying pattern (con't)
๏ถ ?, +, *, {m,n} - iteration, interval
๏ต X?ML : XML or ML
๏ต can+ : can, cann, cannn, cannnn, ...
๏ต can* : ca, can, cann, cannn, ...
๏ต http.* : http://, httpd, https, http1234
๏ "http"๋ค์ ์ด๋ค ๋ฌธ์๋ ๋ถ์ ์ ์๋ค
๏ต abc{2,5} : abcc, abccc, abcccc, abccccc
๏ interval expression์ ๋ช๋ช ์ ํธ, RE matching engine์์๋ ์ง์ ์๋๋ค.
- 7.
applying pattern (con't)
๏ถ ^, $ - position
๏ต ^ftp : "ftp"๋ก ์์ํ๋ ํ
๏ต ^$ : ๋น์ด์๋ ํ (ํ์ ์์๊ณผ ๋์ ์๋ฌด๋ฐ ๋ฌธ์๋ ์๋ค)
๏ต <BR>$ : <BR>๋ก ๋๋๋ ๊ฒฝ์ฐ
- 8.
applying pattern (con't)
๏ถ [ ], [^ ] - character class
๏ต [abcd] : a, b, c, d
๏ต [0-9] : 0, 1, 2, ... , 9
๏ต [a-zA-Z0-9] : ์ํ๋ฒณ๊ณผ ์ซ์
๏ต [^0-9] : [0-9]์ ์ ์ธํ ๋๋จธ์ง
๏ต ^์์ฒด๋ฅผ ๊ทธ๋ฃนํ ํ๋ ค๋ฉด?
๏ ^์ด [ ๋ฐ๋ก ๋ค์๋ง ์ค์ง ์์ผ๋ฉด ๋๋ค.
๏ ํน์ escape ์ํค๊ฑฐ๋...
๏ต interval expression์ ๋ช๋ช ํด์ ์ต์
์ ๋ฃ์ด์ผ๋ง ์ง์ํ๋ค.
๏ e.g. awk
- 9.
greedy matching
๏ถgreedy matching ์ด๋?
$ var2="Itโs gonna be <b>real</b>Itโs gonna <i>change everything
</i> I feel"
$ echo $var2 | egrep -o "<.+>"
<b>real</b>It's gonna <i>change everything</i>
๏ต pattern ์ ์ต๋ํ ๋ง์ ์์ ๋งค์นญ์ ํ๋ ค๊ณ ํจ
๏ต greedy matchingํ result set์ ๋ฒ์๋ฅผ ์ค์ฌ๋๊ฐ๋ฉด์ ์ ํํ ํํ์
์ ์์ฑํ๋๋ก...
๏ถ non-greedy matching ์ด๋?
๏ต greedy matching ๊ฒฐ๊ณผ๋ฅผ ์ต์ ๋งค์นญ์ ์ํด ์์ ํ ๊ฒฐ๊ณผ.
- 10.
non-greedy matching (con't)
๏ถ non-greedy matching์ ์ํ ํํ์์ ์์
$ var2="Itโs gonna be <b>real</b>Itโs gonna <i>change everything
</i> I feel"
$ echo $var2 | egrep -o "<.+>"
<b>real</b>It's gonna <i>change everything</i>
$ echo $var2 | egrep -o "<[^<>]+>"
<b>
</b>
<i>
</i>
- 11.
back-reference
๏ถ ๋งค์นญ๋๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ฌ์ฉํ๋ ํจํด (๋ฐฑ๋ ํผ๋ฐ์ค)
๏ต "( )"๋ก ๋ฌถ์ธ ํจํด ๋งค์นญ ๋ถ๋ถ์ "#"์ ํํ๋ก ์ฌ์ฌ์ฉ
(#๋ ์ซ์๊ฐ ์์๋๋ก), 0๋ฒ์ ์ ์ฒด ๋งค์นญ ๊ฒฐ๊ณผ
$ egrep "^(.+):x:[0-9]+:[0-9]+:.*:/home/1:" /etc/passwd
sunyzero:x:500:500:Steven Kim:/home/sunyzero:/bin/bash
linuxer:x:502:502::/home/linuxer:/bin/bash
$ egrep -v "^(.+):x:[0-9]+:[0-9]+:.*:/home/1:" /etc/passwd
... (์๋ต, ์์ํ์๊ธฐ ๋ฐ๋๋๋ค) ...
๏ต -v : invert
๏ต --color : Surround the matched (non-empty) strings
- 12.
back-reference (conโt)
๏ถback-reference ์์ฉ : tag๋ก ๊ฐ์ธ์ฌ์ง ๋ถ๋ถ ์ถ์ถ
$ var2="Itโs gonna be <b>real</b>Itโs gonna <i>change everything
</i> I feel"
$ echo $var2 | egrep -o "<([a-zA-Z0-9]+)>.*</1>"
<b>real</b>
<i>change everything</i>
$ echo $var2 | egrep --color "<([a-zA-Z0-9]+)>.*</1>"
... ์๋ต ...
- 13.
Tip! - sed(stream ed)
๏ถ substitution (sed)
๏ต vim์ substitution command์ ๊ฐ๋ค
$ var2="Itโs gonna be <b>real</b>Itโs gonna <i>change everything
</i> I feel"
$ echo $var2 | sed -e "s/<[^<>]+>/ /g"
It's gonna be real It's gonna change everything I feel
$ echo $var2 | sed -e "s,<[^<>]+>, ,g"
๏ vim์ substitution command๋ sed์ ๊ธฐ๋ฅ์ด ํฌํจ๋ ๊ฒ๋ฟ์ด๋ค!
= sed๋ฅผ ์๋ฉด vim๋ ์๊ณ ... UNIX๋ ์ด๋ ๊ฒ ์๋ก ์ฐ๊ด๋ ๊ธฐ๋ฅ๋ค์ด ๋ง๋ค.
- 14.
Tip! - awk
๏ถ awk์์๋ ์์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค.
$ var2="Itโs gonna be <b>real</b>Itโs gonna <i>change everything
</i> I feel"
$ echo $var2 | awk '{ gsub(/[ ]*<[^<>]+>[ ]*/, " "); print }'
Itโs gonna be real Itโs gonna change everything I feel
- 15.
alternation
๏ถ ()๋ alternation ์ฉ๋๋ก๋ ์ฌ์ฉ๋จ
๏ต "( )" alternation ์ด๋ pattern group์ ๋ฌถ์๋๋ ์ฌ์ฉ๋๋ค.
$ echo "cat is not dog" | egrep -o "(cat|dog)"
cat
dog
$ echo "My Childhood~~~ bye bye" | egrep -o "(child|boy)?hood"
hood
- 16.
predefined character class
ํด๋์ค ์ค ๋ช
[[:alnum:]] ์ํ๋ฒณ๊ณผ ์ซ์๋ค์ ๋ชจ์
[[:alpha:]] ์ํ๋ฒณ๋ค (๋์๋ฌธ์)
[[:blank:]] Tab(t)์ ์๋ฏธ
[[:cntrl:]] ์ ์ด๋ฌธ์๋ค์ ์๋ฏธ
[[:digit:]] ์ซ์๋ค์ ์๋ฏธ
[[:xdigit:]] 16์ง์(hex)ํ ์ซ์๋ค์ ์๋ฏธ, ์ฆ 0-9a-fA-F ๋ฅผ ํฌํจํ๋ค.
[[:upper:]] ์ํ๋ฒณ ๋๋ฌธ์
[[:lower:]] ์ํ๋ฒณ ์๋ฌธ์
[[:space:]] tab(t), CR(r), New line(n) ์ ํฌํจํ๋ค.
[[:print:]] ์ถ๋ ฅ ๊ฐ๋ฅํ ๋ฌธ์๋ค
[[:graph:]] ๊ณต๋ฐฑ์ ์ ์ธํ ๋ฌธ์๋ค
[[:punct:]] ์ถ๋ ฅ ๊ฐ๋ฅํ ํน์๋ฌธ์๋ค
- 17.
predefined character class(con't)
๏ถ [...]์์ ์กฐํฉ๊ฐ๋ฅ
$ var5="sunyzero@email.com:010-8500-80**:Sun-young Kim:AB-0105R"
$ echo $var5 | egrep -o "^[[:alpha:]@]+"
sunyzero@email
$ echo $var5 | egrep -o "[[:upper:][:digit:]-]{8}"
010-8500
AB-0105R
๏ต sunyzero@email๊น์ง๋ง ์๋ ธ๋ค. ๋ชจ๋ ๋์ค๊ฒ ํ๋ ค๋ฉด?
- 18.
boundary - ERE
๏ถ word ๊ฒฝ๊ณ ๊ฒ์์ ์ฌ์ฉ
b boundary๊ฐ ๋ง๋ ํํ์๋ง ์ฐพ์ต๋๋ค. (๋จ์ด ๊ฒฝ๊ณ๋ฉด ๊ฒ์)
B boundary์ ๋ง์ง ์๋ ํํ์๋ง ์ฐพ์ต๋๋ค. (๋จ์ด ๊ฒฝ๊ณ๋ฉด์ด ์๋ ๊ฒฝ์ฐ๋ง ๊ฒ์)
$ var3="abc? <def> 123hijklm"
$ echo $var3 | egrep -o "[a-j]+"
$ echo $var3 | egrep --color "B[a-j]+B"
abc? <def> 123hijklm
abc
def
hij
$ echo $var3 | egrep --color "b[a-j]+b"
abc? <def> 123hijklm
- 19.
REGEX and PCRE
๏ถ POSIX REGEX
๏ต ๊ฐ๋จํ ํจํด ๋งค์นญ์ ์ฌ์ฉ๋๋ค.
๏ต ํจํด์ ๋ณต์กํจ์ด ๋์ด๋๋ฉด ์ฑ๋ฅ์ ํ๊ฐ ๋ฐ์.
๏ต ์ฒ์์ ๊ผญ POSIX REGEX๋ถํฐ ํ์ตํด์ผ๋ง ํ๋ค.- Standard๋๊น!
๏ถ PCRE (Perl Compatible Regular Expr.)
๏ต perl์์ ํ์๋ ํ์ฅ๋ ์ ๊ทํํ์
๏ต ๋งค์ฐ ๋น ๋ฅธ ์๋, ํ์ฅ๋ ํํ์์...
๏ต C, C++, ๊ธฐํ ๋๋ถ๋ถ์ ์ธ์ด๊ฐ ์ง์ํ๋ค. (์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ ๊ณต)
๏ต ์ค๋ฌด๋ผ๋ฉด PCRE๋ฅผ ์ฌ์ฉํ๋ ํธ์ด ๋ซ๋ค.