๊ฐ์
sub
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๊ท์๊ณผ ๋งค์น๋๋ ๋ถ๋ถ์ ๋ค๋ฅธ ๋ฌธ์๋ก ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋ค.
>>> p = re.compile('(blue|white|red)')
>>> p.sub('colour', 'blue socks and red shoes')
'colour socks and colour shoes'
์ฒซ๋ฒ์งธ ๋ณ์๋ ๋ฐ๊ฟ ๋ฌธ์์ด, ๋๋ฒ์งธ ๋ณ์๋ ๋์ ๋ฌธ์์ด์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ํ๋ฒ๋ง ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ์ธ๋ฒ์งธ ๋ณ์๋ก count๋ฅผ ๋๊ธฐ๋ฉด ๋๋ค.
>>> p.sub('colour', 'blue socks and red shoes', count=1)
'colour socks and red shoes'
์ฒ์ ์ผ์นํ ๋ถ๋ถ๋ง ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
subn
์ญ์ sub
์ ๋์ผํ ๊ธฐ๋ฅ์ ํ์ง๋ง ๋ฐํ ๊ฒฐ๊ณผ๋ฅผ ํํ๋ก ๋๋ ค์ค๋ค๋ ์ฐจ์ด๊ฐ ์๋ค. ๋๋ ค์ค ํํ์ ์ฒซ ๋ฒ์งธ ์์๋ ๋ณ๊ฒฝ๋ ๋ฌธ์์ด์ด๊ณ , ๋ ๋ฒ์งธ ์์๋ ๋ฐ๊พธ๊ธฐ๊ฐ ๋ฐ์ํ ํ์์ด๋ค.
>>> p = re.compile('(blue|white|red)')
>>> p.subn( 'colour', 'blue socks and red shoes')
('colour socks and colour shoes', 2)
์ฐธ์กฐ ๊ตฌ๋ฌธ ์ฌ์ฉํ๊ธฐ
์ฐธ์กฐ ๊ตฌ๋ฌธ์ ๊ทธ๋ฃจํ์์ ๊ฒ์๋ ๊ฒ์ ๋ํด ๋ค์ด๋ฐ์ ํ๋ ๊ธฐ๋ฅ์ ๋งํ๋ค. ์ด๋ฐ ๊ธฐ๋ฅ์ sub
์ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ ํฌ๋งท์ ๋ณ๊ฒฝํ ์ ์๋ค.
>>> p = re.compile(r"(?P<name>\w+)\s+(?P<phone>(\d+)[-]\d+[-]\d+)")
>>> print(p.sub("\g<phone> \g<name>", "park 010-1234-1234"))
010-1234-1234 park
์ ์๋ ์ด๋ฆ + ์ ํ๋ฒํธ
์ ๋ฌธ์์ด์ ์ ํ๋ฒํธ + ์ด๋ฆ
์ผ๋ก ๋ฐ๊พธ๋ ์์ด๋ค. sub
์ ๋ฐ๊ฟ ๋ฌธ์์ด ๋ถ๋ถ์ \g<๊ทธ๋ฃน์ด๋ฆ>
์ ์ฌ์ฉํ๋ฉด ์ ๊ท์์ ๊ทธ๋ฃน ์ด๋ฆ์ ์ฐธ์กฐํ ์ ์๊ฒ ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ๊ทธ๋ฃน ์ด๋ฆ ๋์ ์ฐธ์กฐ ๋ฒํธ๋ฅผ ์ฌ์ฉํด๋ ๋ง์ฐฌ๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ๋๋ ค์ค๋ค.
>>> p = re.compile(r"(?P<name>\w+)\s+(?P<phone>(\d+)[-]\d+[-]\d+)")
>>> print(p.sub("\g<2> \g<1>", "park 010-1234-1234"))
010-1234-1234 park
ํจ์๋ฅผ ๋ฃ์ด ์ฌ์ฉํ๊ธฐ
>>> def hexrepl(match):
... value = int(match.group())
... return hex(value)
...
>>> p = re.compile(r'\d+')
>>> p.sub(hexrepl, 'Call 65490 for printing, 49152 for user code.')
'Call 0xffd2 for printing, 0xc000 for user code.'
hexrepl ํจ์๋ match ๊ฐ์ฒด(์์์ ์ซ์์ ๋งค์น๋๋)๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ 16์ง์๋ก ๋ณํํ์ฌ ๋๋ ค์ฃผ๋ ํจ์์ด๋ค. sub์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ํจ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ํด๋น ํจ์์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์๋ ์ ๊ท์๊ณผ ๋งค์น๋ match ๊ฐ์ฒด๊ฐ ์ ๋ ฅ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋งค์น๋๋ ๋ฌธ์์ด์ ํจ์์ ๋ฐํ ๊ฐ์ผ๋ก ๋ฐ๋๊ฒ ๋๋ค.