U E D R , A S I H C RSS

Linux/Regular Expression


1. ์†Œ๊ฐœ

๋ฆฌ๋ˆ…์Šค์™€ ๊ฐ™์€ ์œ ๋‹‰์Šค์˜ ํด๋ก  ์šด์˜์ฒด์ œ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ๋ฐ˜๋“œ์‹œ ์ตํ˜€์•ผ ํ•  ๊ฒƒ๋“ค์ด ๋ช‡๊ฐ€์ง€ ์กด์žฌํ•œ๋‹ค.
์ •๊ทœ์‹์ด๋ผ๋Š” ๊ฒƒ๋„ ๊ทธ์ค‘์˜ ํ•œ๊ฐ€์ง€์ด๋‹ค.
๋Œ€์ถฉ ์šฉ๋„๋ฅผ ์ ์–ด๋ณด์ž๋ฉด MS์‹œ์Šคํ…œ์—์„œ์˜ *(asterix)๋ฌธ์ž์™€ ๊ฐ™์€ ์šฉ๋„๋ผ๊ณ  ๋ณด๋ฉด๋œ๋‹ค.

๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์œ ๋‹‰์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ •๊ทœ์‹์˜ ์‚ฌ์šฉ์„ ์ง€์›ํ•œ๋‹ค. ์ผ๋‹จ ๋ฐฐ์šฐ๋ฉด ์“ฐ์ž„์ด ๋Œ€๋‹จํ•˜์ง€๋งŒ
์ตํžˆ๊ธฐ ๊ท€์ฐฎ๋‹ค. -.-;

2. Mastering Regular Expressions, 2nd Edition

2.1. Ch1 Introduction to Regular Expressions

  • ^(caret) : ์‹œ์ž‘์„ ์˜๋ฏธํ•จ. ^cat์€ cat์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž...(cats,cater,caterer...).in the line rather real text
  • $(dollar) : ๋์„ ์˜๋ฏธํ•จ. cat$์€ cat์œผ๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž ...(blackcat, whitecat, ....) in the line rather real text
  • [](Character Class) : seperaete ํ•˜๋ฉด seperate, seperete ๋ชจ๋‘๋ฅผ ํฌํ•จํ•œ๋‹ค.
    • - (dash) : ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.([]์•ˆ์—์„œ๋งŒ.. ๋ฐ–์—์„œ๋Š” '-'์ž์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค) 1-6 1~6๊นŒ์ง€
    • ^ : [] ์•ˆ์—์„œ๋Š” ๋ฐ˜๋Œ€๋ฅผ ๋œปํ•œ๋‹ค. ^1-6 ์€ 1~6์ด ์•„๋‹Œ๊ฒƒ๋“ค์„ ์˜๋ฏธ..
  • . (dot) : ์–ด๋–ค ๋ฌธ์ž๋“  ๊ธฐํ˜ธ๋“  ํ•ด๋‹น๋œ๋‹ค. 03.19.76 ํ•˜๋ฉด 03/19/76,03-19-76,03.19.76 ๋“ฑ์ด ํ•ด๋‹น๋œ๋‹ค.
  • (OR) : ์—ฌ๋Ÿฌ๊ฐœ์˜ ์‹์„ ํ•œ๊ฐœ์˜ ์‹์œผ๋กœ ํ•ฉ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. []์•ˆ์—์„œ๋Š”
    ์ด ๋ฌธ์ž๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋ฟ์ด๋‹ค. greay, grey|gray,gr(a|e)y ๋Š” ๊ฐ™๋‹ค.
  • ()(parentheses) : a(a|b)cde ํ•˜๋ฉด aacde, abcde ๋‘˜๋‹ค ํ•ด๋‹น ๋œ๋‹ค. bํ•˜๋ฉด | ๋ฅผ ๋ฌธ์ž๋กœ ์ฒ˜๋ฆฌ ํ•˜์ง€๋งŒ (a|b) ๋กœ ()๋ฅผ ์”Œ์–ด ์ฃผ๋ฉด |๋ฅผ OR๋กœ ํ•ด์„ํ•œ๋‹ค.
  • -i(option) : ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ์•ˆํ•œ๋‹ค. ์˜ˆ)egrep -i '^(From|Subject|Date): ' mailbox
  • \< : ๋‹จ์–ด๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์ง€์ 
  • \> : ๋‹จ์–ด๊ฐ€ ๋๋‚˜๋Š” ์ง€์ 
  • ? : one optional, ? ์•ž์— ์žˆ๋Š” ๊ธ€์ž๊ฐ€ ์žˆ์–ด๋„ ๋˜๊ณ  ์—†์–ด๋„ ๋œ๋‹ค. colour ํ•˜๋ฉด color, colur ๋ชจ๋‘ ๋œ๋‹ค.
  • * : ? ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ(์ž„์˜์˜ ๊ฐœ์ˆ˜) ์žˆ๋Š” ํšจ๊ณผ (์—†๋Š”๊ฒƒ๋„ ํฌํ•จ)
  • + : ? ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ(์ž„์˜์˜ ๊ฐœ์ˆ˜) ์žˆ๋Š” ํšจ๊ณผ

3. ์ •๊ทœ์‹ ํŽŒ ๋‚ด์šฉ

(1) ^ (caret) : ๋ผ์ธ์˜ ์ฒ˜์Œ์ด๋‚˜ ๋ฌธ์ž์—ด์˜ ์ฒ˜์Œ์„ ํ‘œ์‹œ

์˜ˆ : ^aaa (๋ฌธ์ž์—ด์˜ ์ฒ˜์Œ์— aaa๋ฅผ ํฌํ•จํ•˜๋ฉด ์ฐธ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฑฐ์ง“)

(2) $ (dollar) : ๋ผ์ธ์˜ ๋์ด๋‚˜ ๋ฌธ์ž์—ด์˜ ๋์„ ํ‘œ์‹œ

์˜ˆ : aaa$ (๋ฌธ์ž์—ด์˜ ๋์— aaa๋ฅผ ํฌํ•จํ•˜๋ฉด ์ฐธ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฑฐ์ง“)

(3) . (period) : ์ž„์˜์˜ ํ•œ ๋ฌธ์ž๋ฅผ ํ‘œ์‹œ

์˜ˆ : ^a.c (๋ฌธ์ž์—ด์˜ ์ฒ˜์Œ์— abc, adc, aZc ๋“ฑ์€ ์ฐธ, aa ๋Š” ๊ฑฐ์ง“)

a..b$ (๋ฌธ์ž์—ด์˜ ๋์— aaab, abbb, azzb ๋“ฑ์„ ํฌํ•จํ•˜๋ฉด ์ฐธ)

(4) [] (bracket) : ๋ฌธ์ž์˜ ์ง‘ํ•ฉ์ด๋‚˜ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ„, ๋‘ ๋ฌธ์ž ์‚ฌ์ด์˜ "-"๋Š” ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ„

[]๋‚ด์—์„œ "^"์ด ์„ ํ–‰๋˜๋ฉด not์„ ๋‚˜ํƒ€๋ƒ„

์ด์™ธ์—๋„ "๋ฌธ์žํด๋ž˜์Šค"๋ฅผ ํฌํ•จํ•˜๋Š” [:๋ฌธ์žํด๋ž˜์Šค:]์˜ ํ˜•ํƒœ๊ฐ€ ์žˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ "๋ฌธ์žํด๋ž˜์Šค"์—๋Š” alpha, blank, cntrl, digit, graph, lower,

print, space, uppper, xdigit๊ฐ€ ์žˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ C์–ธ์–ด์˜ <ctype.h>๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด [:digit:]๋Š” [0-9]์™€ [:alpha:]๋Š” [A-Za-z]์™€ ๋™์ผํ•˜๋‹ค.

์ด์™ธ์— [:<:]์™€ [:>:]๋Š” ์–ด๋–ค ๋‹จ์–ด(์ˆซ์ž, ์•ŒํŒŒ๋ฒณ, '_'๋กœ ๊ตฌ์„ฑ๋จ)์˜ ์‹œ์ž‘๊ณผ ๋

์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์˜ˆ : [abc] (a, b, c ์ค‘ ์–ด๋–ค ๋ฌธ์ž, "[a-c]."๊ณผ ๋™์ผ)

[Yy] (Y ๋˜๋Š” y)

[A-Za-z0-9] (๋ชจ๋“  ์•ŒํŒŒ๋ฒณ๊ณผ ์ˆซ์ž)

[-A-Z]. ("-"(hyphen)๊ณผ ๋ชจ๋“  ๋Œ€๋ฌธ์ž)

[^a-z] (์†Œ๋ฌธ์ž ์ด์™ธ์˜ ๋ฌธ์ž)

[^0-9] (์ˆซ์ž ์ด์™ธ์˜ ๋ฌธ์ž)

[[:digit:]] ([0-9]์™€ ๋™์ผ)

(5) {} (brace) : {} ๋‚ด์˜ ์ˆซ์ž๋Š” ์ง์ „์˜ ์„ ํ–‰๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ํšŸ์ˆ˜ ๋˜๋Š” ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ„

์˜ˆ : a{3} ('a'์˜ 3๋ฒˆ ๋ฐ˜๋ณต์ธ aaa๋งŒ ํ•ด๋‹น๋จ)

a{3,} ('a'๊ฐ€ 3๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต์ธ aaa, aaaa, aaaa, ... ๋“ฑ์„ ๋‚˜ํƒ€๋ƒ„)

a{3,5} (aaa, aaaa, aaaaa ๋งŒ ํ•ด๋‹น๋จ)

ab{2,3} (abb์™€ abbb ๋งŒ ํ•ด๋‹น๋จ)

[0-9]{2} (๋‘ ์ž๋ฆฌ ์ˆซ์ž)

doc[7-9]{2} (doc77, doc87, doc97 ๋“ฑ์ด ํ•ด๋‹น)

[^Zz]{5} (Z์™€ z๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” 5๊ฐœ์˜ ๋ฌธ์ž์—ด, abcde, ttttt ๋“ฑ์ด ํ•ด๋‹น)

.{3,4}er ('er'์•ž์— ์„ธ ๊ฐœ ๋˜๋Š” ๋„ค ๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ Peter, mother ๋“ฑ์ด ํ•ด๋‹น)

(6) * (asterisk) : "*" ์ง์ „์˜ ์„ ํ–‰๋ฌธ์ž๊ฐ€ 0๋ฒˆ ๋˜๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ž์—ด

์˜ˆ : ab*c ('b'๋ฅผ 0๋ฒˆ ๋˜๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ํฌํ•จํ•˜๋ฏ€๋กœ ac, ackdddd, abc, abbc, abbbbbbbc ๋“ฑ)

* (์„ ํ–‰๋ฌธ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์ž„์˜์˜ ๋ฌธ์ž์—ด ๋ฐ ๊ณต๋ฐฑ ๋ฌธ์ž์—ด๋„ ํ•ด๋‹น๋จ)

.* (์„ ํ–‰๋ฌธ์ž๊ฐ€ "."์ด๋ฏ€๋กœ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด, ๊ณต๋ฐฑ ๋ฌธ์ž์—ด์€ ์•ˆ๋จ)

ab* ('b'๋ฅผ 0๋ฒˆ ๋˜๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ํฌํ•จํ•˜๋ฏ€๋กœ a, accc, abb, abbbbbbb ๋“ฑ)

a* ('a'๋ฅผ 0๋ฒˆ ๋˜๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ํฌํ•จํ•˜๋ฏ€๋กœ k, kdd, sdfrrt, a, aaaa, abb, ๊ณต๋ฐฑ๋ฌธ์ž์—ด ๋“ฑ)

doc[7-9]* (doc7, doc777, doc778989, doc ๋“ฑ์ด ํ•ด๋‹น)

[A-Z].* (๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด)

like.* (์ง์ „์˜ ์„ ํ–‰๋ฌธ์ž๊ฐ€ '.'์ด๋ฏ€๋กœ like์— 0 ๋˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฌธ์ž๊ฐ€ ์ถ”๊ฐ€๋œ ๋ฌธ์ž์—ด์ด ๋จ, like, likely, liker, likelihood ๋“ฑ)

(7) + (asterisk) : "+" ์ง์ „์˜ ์„ ํ–‰๋ฌธ์ž๊ฐ€ 1๋ฒˆ ์ด์ƒ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ž์—ด

์˜ˆ : ab+c ('b'๋ฅผ 1๋ฒˆ ๋˜๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ํฌํ•จํ•˜๋ฏ€๋กœ abc, abckdddd, abbc, abbbbbbbc ๋“ฑ, ac๋Š” ์•ˆ๋จ)

ab+ ('b'๋ฅผ 1๋ฒˆ ๋˜๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ํฌํ•จํ•˜๋ฏ€๋กœ ab, abccc, abb, abbbbbbb ๋“ฑ)

like.+ (์ง์ „์˜ ์„ ํ–‰๋ฌธ์ž๊ฐ€ '.'์ด๋ฏ€๋กœ like์— ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฌธ์ž๊ฐ€ ์ถ”๊ฐ€๋œ ๋ฌธ์ž์—ด์ด ๋จ, likely, liker, likelihood ๋“ฑ, ๊ทธ๋Ÿฌ๋‚˜ like๋Š” ํ•ด๋‹น์•ˆ๋จ)

[A-Z]+ (๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด)

(8) ? (asterisk) : "?" ์ง์ „์˜ ์„ ํ–‰๋ฌธ์ž๊ฐ€ 0๋ฒˆ ๋˜๋Š” 1๋ฒˆ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ž์—ด

์˜ˆ : ab?c ('b'๋ฅผ 0๋ฒˆ ๋˜๋Š” 1๋ฒˆ ํฌํ•จํ•˜๋ฏ€๋กœ abc, abcd ๋งŒ ํ•ด๋‹น๋จ)

(9) () (parenthesis) : ()๋Š” ์ •๊ทœ์‹๋‚ด์—์„œ ํŒจํ„ด์„ ๊ทธ๋ฃนํ™” ํ•  ๋•Œ ์‚ฌ์šฉ

(10) | (bar) : or๋ฅผ ๋‚˜ํƒ€๋ƒ„

์˜ˆ : a|b|c (a, b, c ์ค‘ ํ•˜๋‚˜, ์ฆ‰ [a-c]์™€ ๋™์ผํ•จ)

yes|Yes (yes๋‚˜ Yes ์ค‘ ํ•˜๋‚˜, [yY]es์™€ ๋™์ผํ•จ)

korea|japan|chinese (korea, japan, chinese ์ค‘ ํ•˜๋‚˜)

(11) \ (backslash) : ์œ„์—์„œ ์‚ฌ์šฉ๋œ ํŠน์ˆ˜ ๋ฌธ์ž๋“ค์„ ์ •๊ทœ์‹๋‚ด์—์„œ ๋ฌธ์ž๋ฅผ ์ทจ๊ธ‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ '\'๋ฅผ ์„ ํ–‰์‹œ์ผœ์„œ ์‚ฌ์šฉํ•˜๋ฉด๋จ

์˜ˆ : filename\.ext ("filename.ext"๋ฅผ ๋‚˜ํƒ€๋ƒ„)

[\?\[\\\]] ('?', '[', '\', ']' ์ค‘ ํ•˜๋‚˜)


์ •๊ทœ์‹์—์„œ๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์€ ์ผ๋ฐ˜ ๋ฌธ์ž๋กœ ์ทจ๊ธ‰ํ•จ


์ •๊ทœ์‹์€ Unix์˜ ๋Œ€ํ‘œ์ ์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ธ vi, emacs, ed, sed, awk, grep, egrep ๋“ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์€ grep์—์„œ ์ •๊ทœ์‹์„ ํ™œ์šฉํ•œ ์˜ˆ๋ฅผ ๋ณด์—ฌ ์ฃผ๊ณ  ์žˆ๋‹ค.

(1) $ ๋ช…๋ น์–ด | grep '์ •๊ทœ์‹'

<= ๋ช…๋ น์–ด์˜ ๊ฒฐ๊ณผ๋ฅผ grep์ด ์ž…๋ ฅ๋ฐ›์•„ ์ •๊ทœ์‹์„ ์ด์šฉํ•˜์—ฌ ํŒจํ„ด์„ ์ฐพ์•„๋ƒ„

์˜ˆ : $ who | grep 'hgkim' <= hgkim์ด๋ผ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ login ํ•ด ์žˆ๋Š”์ง€๋ฅผ ์•Œ์•„๋ด„

$ ls -al | grep '^d.*' <= ls -al ์˜ ๊ฒฐ๊ณผ 'd'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ผ์ธ(์ฆ‰ ๋””๋ ‰ํ† ๋ฆฌ๋“ค)

๋งŒ์„ ์ถœ๋ ฅ

$ ls -al | grep '^d.*' <= ls -al ์˜ ๊ฒฐ๊ณผ 'd'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ผ์ธ(์ฆ‰ ๋””๋ ‰ํ† ๋ฆฌ๋“ค)

๋งŒ์„ ์ถœ๋ ฅ

$ ls -al | grep '^[^d]..x..x..x' <= ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ œ์™ธํ•˜๊ณ ("[^d]") ๋ˆ„๊ตฌ๋‚˜

์‹คํ–‰๊ฐ€๋Šฅํ•œ ํŒŒ์ผ("..x..x..x")๋“ค ์ฐพ๊ธฐ

(2) $ grep '์ •๊ทœ์‹' ํŒŒ์ผ์ด๋ฆ„

<= ํŒŒ์ผ์„ ์ž…๋ ฅ๋ฐ›์•„ ์ •๊ทœ์‹์„ ์ด์šฉํ•˜์—ฌ ํŒจํ„ด์„ ์ฐป์•„๋ƒ„

์˜ˆ: $ grep 'telnet' /etc/inetd.conf


์ด์™ธ์˜ ๋ช…๋ น์–ด๋“ค๋„ grep๊ณผ ์œ ์‚ฌํ•œ ํ˜•ํƒœ๋กœ ์ด์šฉ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ •๊ทœ์‹์„ ์ž˜ ์ด์šฉํ•˜๋ฉด ์œ ๋‹‰์Šค์˜ ํ™œ์šฉ์ด ๋ฐฐ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.



PHP์—์„œ๋Š” ์ •๊ทœ์‹๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‹ค์Œ์˜ ๋„ค๊ฐ€์ง€ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.


int ereg(string givenPattern, string givenString, array matched);

- givenString์„ "string1stringAstring2stringBstring3 ... string9stringI" ๋กœ ์ฃผ์–ด์ ธ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ด๋•Œ stringA, stringB, ... , stringI๋Š” NULL ์ด์–ด๋„ ์ƒ๊ด€์ด ์—†๋‹ค(์ฆ‰ givenString์€ "string1string2string3 ... string9" ์ธ ๊ฒฝ์šฐ์ž„).

- givenString์ด ์œ„์™€ ๊ฐ™์ด ์ฃผ์–ด์ง„ ๊ฒฝ์šฐ,

givenPattern์€ "(pattern1)stringA(pattern2)stringB(pattern3) ... (pattern9)stringI"๋กœ ์ž…๋ ฅํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ์ฆ‰ pattern1, pattern2, ..., pattern9๋Š” ๊ฐ๊ฐ string1, string2, ... , string9์—์„œ ์ฐพ๊ณ ์žํ•˜๋Š” ์ •๊ทœ์‹์ธ ๊ฒƒ์ด๋‹ค.

- ์ด๋•Œ pattern1์ด string1์—์„œ ๋ฐœ๊ฒฌํ•œ ํŒจํ„ด์€ $matched[1]์— ์ €์žฅ๋˜๊ณ , pattern2๊ฐ€ string2์—์„œ ๋ฐœ๊ฒฌํ•œ ํŒจํ„ด์€ $matched[2]์— ์ €์žฅ๋˜๊ณ , ..., pattern9๊ฐ€ string9์—์„œ ๋ฐœ๊ฒฌํ•œ ํŒจํ„ด์€ $matched[9]์— ์ €์žฅ๋œ๋‹ค. PHP3์˜ ๊ฒฝ์šฐ ereg์—์„œ๋Š” ์ตœ๋Œ€ 9๊ฐœ ๊นŒ์ง€์˜ pattern์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Œ์— ์œ ์˜ํ•˜์ž.

- ๊ทธ๋ฆฌ๊ณ  $matched[0]์—๋Š” $matched[1]stringA$matched[2]stringB ... $matched[9]stringI๊ฐ€ ์ €์žฅ๋œ๋‹ค.

- ereg๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ $matched[0]์— ์ €์žฅ๋œ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

- ereg๋Š” case sensitive

- eregi๋Š” case insensitive


์˜ˆ1 :

์ฝ”๋“œ => print(ereg ("(.*)ef([abc].*)","abcdefabc",$matched));

print("<br>");

while (list($a,$b)=each($matched))

if ($b)

print("$a, $b <br>");

๊ฒฐ๊ณผ => 9

0, abcdefabc

1, abcd

2, abc

์˜ˆ2 :

์ฝ”๋“œ => print(ereg ("(.*)d(.*)e(.*)qrs(.*)","abcdefghijklmnopqrstuvwxyz",$matched));

print("<br>");

while (list($a,$b)=each($matched))

if ($b)

print("$a, $b <br>");

๊ฒฐ๊ณผ => 26

0, abcdefghijklmnopqrstuvwxyz

1, abc

3, fghijklmnop

4, tuvwxyz

์˜ˆ 3 :

์ฝ”๋“œ => $date="1999-11-17";

if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs))

print("$regs[3].$regs[2].$regs[1]");

else print("Invalid date format: $date");

๊ฒฐ๊ณผ => 17.11.1999

์˜ˆ 4 :

์ฝ”๋“œ => $joomin="711011-1234567";

if (ereg("([0-9]{2})([01]{1}[09]{1}[0-3]{1}[0-9]{1})-([12]{1}[0-9]{6})",$date, $regs))

print("Valid");

else print("Invalid format: $joomin");


int eregi(string givenPattern, string givenString, array matched);

- ereg์˜ 'case insensitive' ๋ฒ„์ ผ


์˜ˆ :

์ฝ”๋“œ => $email="xs9_tx-abc.yyy_c@cne.kyungsung.ac.kr";

eregi("(^[_\.0-9a-z-]+)@(([0-9a-z][0-9a-z-]+\.)+)([a-z]{2,3}$)",$email,$matched);

while (list($a,$b)=each($matched))

if ($b) print("$a, $b <br>");


๊ฒฐ๊ณผ => 0, xs9_tx-abc.yyy_c@cne.kyungsung.ac.kr

1, xs9_tx-abc.yyy_c

2, cne.kyungsung.ac.

3, ac.

4, kr



์ฝ”๋“œ => eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email,$matched);

while (list($a,$b)=each($matched))

if ($b) print("$a, $b <br>");

๊ฒฐ๊ณผ => 0, xs9_tx-abc.yyy_c@cne.kyungsung.ac.kr

1, ac.



string ereg_replace(string givenPattern, string replacementPattern, string givenString);

- givenString์—์„œ givenPattern์— ๋ถ€ํ•ฉํ•˜๋Š” ํ…์ŠคํŠธ(matched text)๋ฅผ ์ฐพ์•„์„œ,

replacementPattern์œผ๋กœ ๋Œ€์ฒด

- givenPattern์ด "(ํŒจํ„ด)"์œผ๋กœ ๋ฌถ์ธ ๋ฌธ์ž์—ด๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉด, replacementPattern์—๋Š” ์ด์— ๋Œ€์‘ํ•˜๋Š” "\\digit(๋ฌธ์ž์—ด)" ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค(digit๋Š” 0, 1, ... ,9 ์ค‘ ํ•˜๋‚˜). ๊ทธ๋ฆฌ๊ณ  givenString์€ "(ํŒจํ„ด)"์„ ์ด์šฉํ•ด ์ฐพ์€ ๊ฒฐ๊ณผ๋“ค์„ "\\digit(๋ฌธ์ž์—ด)"์— ์žˆ๋Š” "๋ฌธ์ž์—ด"๋“ค๋กœ ๋Œ€์ฒดํ•˜๊ฒŒ ๋œ๋‹ค. "\\0" ๋Š” givenString ์ „์ฒด์— ๋Œ€ํ•ด "(ํŒจํ„ด)"์˜ ๊ฒฐ๊ณผ๋ฅผ ์ ์šฉํ•  ๋•Œ ์ด์šฉ๋œ๋‹ค.

- ๋ณ€๊ฒฝ๋œ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ด

- case sensitive


์˜ˆ :

์ฝ”๋“œ => $string = "This is a test";

print(ereg_replace(" is", " was",$string)); print("<br>");

print(ereg_replace("( )is","\\1was",$string)); print("<br>");

print(ereg_replace("(( )is)","\\2was",$string)); print("<br>");

print(ereg_replace("(( )is)(( )a)(( )test)", "\\1was\\2an\\3exam",$string));

๊ฒฐ๊ณผ => "This was a test";

"This was a test";

"This was a test";

"This was an exam";


์˜ˆ 2 : redundant whitespace ์—†์• ๊ธฐ

์ฝ”๋“œ => $str ="~ s/\s+/ /g";

$str = eregi_replace("[[:space:]]+", " ", $str);

print("$str<br>");

๊ฒฐ๊ณผ => ~ s/\s+/ /g


string eregi_replace(string givenPattern, string replacementPattern, string givenString);

- ereg_replace์˜ 'case insensitive' ๋ฒ„์ ผ


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:39
Processing time 0.0089 sec