์คํ์ฑํ ๋ฐฉ, ์คํจ์จ, ๋ฌธ์์ด ์์ถ
/pattern/gm // /g : (global) ๋ชจ๋ ๋ฌธ์์ด์์ // /m : (mutliple) ์ฌ๋ฌ ๋ผ์ธ์์. ํจํด์ ์ฐพ๊ฒ ๋ค.
^ $
/^hello // ^ : ๋ฌธ์์ด ์ฒ์ /hello$ // $ : ๋ฌธ์์ด ์ฒ์ /^hello$ // hello๋ก ์์, hello๋ก ๋ -> ์ ํํ๊ฒ hello๋ง!
/. // ๋ชจ๋ ๋ฌธ์ /[aei] // aei์ค ํ๋ /[A-za-z0-9] // ์ํ๋ฒณ, ์ซ์ ์ค ํ๋ /[^aeiou] // aeiou ๊ฐ ์๋ ๊ฒ ์ค ํ๋
grouping
(?:abc) : ๊ทธ๋ฃน์ ์ฌ์ฉํ์ง ์์
(?=abc) : (Positive ๋งค์นญ) ๊ทธ๋ฃน์ผ๋ก ์ค์ (Lookahead)
(?!abc) : (Negative ๋งค์นญ) ๊ทธ๋ฃน์ผ๋ก ์ค์ (Lookbehind)/(on|ues|rida)/gm : ๊ทธ๋ฃน 1๋ก 3๊ฐ ์ค ๋งค์นญ๋๋ ํจํด ์ฐพ์ /(?:on|ues)/gm /(on|ues)|(rida)/gm : ๊ทธ๋ฃน1(on|ues)๊ณผ ๊ทธ๋ฃน2(rida)๋ก ๊ฐ๊ฐ ๋งค์นญ๋๋ ํจํด ์ฐพ์ /.(a|e|o)ll./gm /hello (?!world)/gm : hello ๋ค์ world๊ฐ ์ค์ง ์๋ ๊ฒ /hello (?=world)/gm : hello ๋ค์ world๊ฐ ์ค๋ ๊ฒ
์๋์
// url parsing์ ์ฌ์ฉ _* : ์์ ์๋ ๋ฌธ์๊ฐ 0๊ฐ ~ N๊ฐ ({0,}) _+ : ์์ ์๋ ๋ฌธ์๊ฐ 1๊ฐ ~ N๊ฐ({1,}) _? : ์์ ์๋ ๋ฌธ์๊ฐ 0๊ฐ ~ 1๊ฐ ({0,1})
\w \d \s
/\w/gm : ์๋ /\w{5} /gm : 5๊ฐ์ ๊ธ์์ ์คํ์ด์ค ํ๋ /\W/gm : not ์๋ /\d/gm : ์ซ์ /\D/gm : not ์ซ์ /\s/gm : ์คํ์ด์ค /\S/gm : not ์คํ์ด์ค
escape \
/\[.*]/gm : ๋๊ดํธ([]) ์์ ๊ฐ์ธ์ฌ์ง ๋ฌธ์์ด /\(.*\)/gm : ์๊ดํธ ์์ ๊ฐ์ธ์ฌ์ง ๋ฌธ์์ด /\\.*\//gm : ์ด๋ฏธ ์ฌ์ฉ๋๊ณ ์๋ ํน์๋ฌธ์๋ก ๊ฐ์ธ์ฌ์ง ๋ฌธ์์ด /-.*-/gm : ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ /\^\^/gm : ์ด์ค์ผ์ดํ ๋ฌธ์๊ฐ ํ์ํ ๊ฒฝ์ฐ /:\)/gm : ์ด์ค์ผ์ดํ ๋ฌธ์๊ฐ ํ์ํ ๊ฒฝ์ฐ
ํ๊ธ
[ใฑ-ใ |ใ -ใ ฃ|๊ฐ-ํฃ] # ๋ชจ๋ ํ๊ธ [^[๊ฐ-ํฃ]+$] # ํ๊ธ๋ง ํ์ฉ [^[๊ฐ-ํฃ\\s]+$] # ๊ณต๋ฐฑ ํ์ฉ
Method | ๋จ์ถ | ์ค๋ช |
---|---|---|
re.compile('ํจํด', re.DOTALL) | re.compile('ํจํด', re.S) | ๋ชจ๋ ๋ฌธ์(์ค๋ฐ๊ฟ ํฌํจ) |
re.compile('ํจํด', re.IGNORECASE) | re.compile('ํจํด', re.I) | ๋์๋ฌธ์ ๊ตฌ๋ถ X |
re.compile('ํจํด', re.MULTILINE) | re.compile('ํจํด', re.M) | ๋ชจ๋ ๋ผ์ธ ๋งค์นญ |
re.compile('ํจํด', re.VERBOSE) | re.compile('ํจํด', re.X) | ์ฃผ์ ๋ฑ ํธ์ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ |
re.compile('ํจํด', re.ASCII) | re.compile('ํจํด', re.A) | ASCII๋ง์ ์ฌ์ฉ |
Method | ์ค๋ช |
---|---|
re.compile('ํจํด').match(๋ฌธ์์ด) | ๋ฌธ์์ด ์ฒ์์ด ์ ๊ท์ ๋งค์นญ ์ฌ๋ถ ํ๋จ(์์ ๊ฒฝ์ฐ object ์ฃผ์ ๋ฐํ, ์์ ๊ฒฝ์ฐ None) |
re.compile('ํจํด').search(๋ฌธ์์ด) | ๋ฌธ์์ด ์ ์ฒด์์ ์ ๊ท์ ๋งค์นญ ์ฌ๋ถ ํ๋จ(์์ ๊ฒฝ์ฐ object ์ฃผ์ ๋ฐํ, ์์ ๊ฒฝ์ฐ None) |
re.compile('ํจํด').findall(๋ฌธ์์ด) | ์ ๊ท์๊ณผ ๋งค์นญ๋๋ฉด ๋ฆฌ์คํธ๋ก ๋ฐํ |
re.compile('ํจํด').finditer(๋ฌธ์์ด) | ์ ๊ท์๊ณผ ๋งค์นญ๋๋ฉด ์ํ๊ฐ๋ฅ ๊ฐ์ฒด๋ก ๋ฐํ |
re.compile('ํจํด').split(๋ฌธ์์ด) | ํจํด๋๋ก ๋ฌธ์์ด ๋ถํ |
re.compile('ํจํด').sub(๋์ฒด๋ฌธ๊ตฌ, ๋ฌธ์์ด) | ํจํด์ ๋์ฒด๋ฌธ๊ตฌ๋ก ๋์ฒดํจ(replace) |
re.compile('ํจํด').fullmatch(๋ฌธ์์ด) | ๋ฌธ์์ด ์ ์ฒด๊ฐ ์ ๊ท์์ ๋งค์นญ๋๋์ง ์ฌ๋ถ ํ๋จ. |
Method | ์ค๋ช |
---|---|
group(์ซ์) | ์ผ์นํ ๋ฌธ์์ด์ ๊ทธ๋ฃน์์ ์ซ์์ ํด๋นํ๋ ๋ฌธ์์ด์ ๋ฐํํ๋ค. |
groups(default=None) | ์ผ์นํ ๋ฌธ์์ด์ ๋ชจ๋ ๊ทธ๋ฃน์ ๋ฐํํ๋ค. |
groupdict(default=None) | ์ผ์นํ ๋ฌธ์์ด์ ํจํด์ ๋์ ๋๋ฆฌ ๊ฐ์ผ๋ก ๋ฐํํ๋ค. |
expand(๋ฌธ์์ด) | ์ผ์นํ ๋ฌธ์์ด์ ๊ทธ๋ฃน์ ๋ํด ์ต์ ๊ฐ์ ํด๋นํ๋ ๋ฌธ์์ด๋ก ๋ฐํํ๋ค. |
๋ฌธ์์ด.match(/\([A-Za-z0-9\.\-@, ]+\)/g).map(e=>e.replace(/\(/g, '').replace(/\)/g, '').split(', '))
๊ทธ ๋๋ ์๊ฐํด๋ณด๋๊น.. 2ํ๋ 2ํ๊ธฐ ์๋๋ฐ, ๋ชฉ์์ผ ํ๋ฃจ 2๊ต์ ์ฐ๋ฌ์ ์์ ๋ฃ๊ณ ๋ฐ๋ก ์ค์ต์ค์์ ๊ณผ์ 1์๊ฐ ํด์ ์ ์ถํ๊ณ ํ๊ตํ์๋๋ฐ ์ ๊ณผ๊ฑฐ์ ๋ ๋๋จํ๋ค ๋ญ์ง? ๋ผ๋ ์๊ฐ๊ณผ ํจ๊ป ์ง๊ธ์ ๋.. ๊ฐ๋ ์ ์ดํดํ๊ณ ์ฝ๋๋ฅผ ์ง๋๊ฑธ..? ๊ณผ๊ฑฐ์ ๋๋ณด๋ค ๋์ ์ฝ๋๋ฅผ ์งฐ๋๊ฑธ..? ์ด๋ผ๋ ์๊ฐ๋ ๋ค์๋ค. ํนํ ๊ทธ๋ฅ ๋ฉ์ธ ํจ์์ ์ฐ๋ค๋ฅ ์ผ๋ ์ฝ๋๋ฅผ ํจ์ ๋จ์๋ก ๋ง๋ค๋ ค๊ณ ๋ ธ๋ ฅํ๋ค.
๋งฅ๋ถ์ผ๋ก C ๋๋ฆฌ๋๊ฑฐ ๋ณดํต VSCode ์ด๋ค๊ณ ํ๋๋ฐ ์์ ์ ํธ์๋๊น Xcode๋ฅผ ์ฌ์ฉํ๋ค. ์๋์ฐ์์ Visual Studio ์ธ ๋ ์ฒ๋ผ ์ฝ์ ๋ด๋ ค๊ฐ๋๊ฑฐ ์ค์ ํ๊ณ ๊ทธ๋ฐ๊ฑด ์ํด๋ ๋์ ํธํ๋๋ฐ, ํ๋ก ํธ์๋ ๊ณผ์ ๋ฃ๋ ํ๋ฌ๋ฐ๋์ VSC ๋จ์ถํค๋ค์ ๋๋ฌด ์ต์ํด์ง ๊ฒ ๊ฐ๋ค.. Xcode๋ ์๋๋๊ฑธ๊น..? ์ด์ 1์๋ถํฐ Xcode์ ์ฌ๋ํด์ผํ๋๋ฐ..?
์๋ฃ๊ตฌ์กฐ ๋ณต์ต / ์ค์ต๊ณผ์ 3_๋ณต์ต.c, ์ค์ต๊ณผ์ 4_๋ณต์ต.c
์ฌ์ค์ ์๋ฃ๊ตฌ์กฐ ๋ฌธ์ ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ค์ด๊ฐ๊ธด ๋ค์ด๊ฐ๋๊น ์ค๋ ๊ทธ๋ฅ ๋ด๋ด.. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ง ํ์๋ค. ์์๋ ์์ง๋ง ์คํ์ฑํ ๋ฐฉ, ์คํจ์จ, ๋ฌธ์์ด ์์ถ ์ด ์ธ ๋ฌธ์ ๋ฅผ ํ์๋๋ฐ,
dict = sorted(dict, lambda x: x[1], reverse=True)
์๊ฒจ๋์.์ฌ์ค.. ์ ๊ทํํ์ ์์ฒด๋ ์! ๊ทธ๋ ๊ตฌ๋ ํ๊ณ ์๊ฒ ๋๋ฐ, ๋ชจ๋ ํจ์ ์ฐ๋๊ฒ ์ต์ํ์ง ์์ ๊ฒ ๊ฐ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ข ๋ ๊ฐ๋จํ? ๋๋์ธ๋ฐ, ํ์ด์ฌ๋ง ํด๋ re ๋ชจ๋ ๋ถ๋ฌ์์ผํ๊ณ .. ์ค์ํํธ๋ ๊ณต์ ๋ฌธ์ ์ฝ์ด๋ด์ผํ๋๋ฐ... ๋ฑ ๋ณด๊ธฐ์๋ ํ์ด์ฌ๋ณด๋ค ๋ณต์กํด๋ณด์ธ๋ค.
ํ์ดํ !