Python/Python Language

์ •๊ทœ์‹ ํ•จ์ˆ˜ (Python RegEx)

567Rabbit 2024. 4. 24. 12:29

Python RegEx [์ •๊ทœ์‹]
- ๊ฒ€์ƒ‰ ํŒจํ„ด์„ ํ˜•์„ฑํ•˜๋Š” ์ผ๋ จ์˜ ๋ฌธ์ž
- ๋ฌธ์ž์—ด์— ์ง€์ •๋œ ๊ฒ€์ƒ‰ ํŒจํ„ด์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
- ๋‚ด์žฅํŒจํ‚ค์ง€์ด๋ฉฐ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค

 


import re
#๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ The๋กœ ์‹œ์ž‘ํ•˜๊ณ  Spain์œผ๋กœ ๋๋‚˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค 

txt = "The rain in Spain"
x = re.search("^The.*Spain$",txt)

if x:
    print("Yes! match!")
else:
    print("No match")


 

 


์ •๊ทœ์‹ ํ•จ์ˆ˜


1) findall : ๋ชจ๋“  ์ผ์น˜ ํ•ญ๋ชฉ์ด ํฌํ•จ๋œ ๋ชฉ๋ก์„ ๋ฆฌํ„ด
2) search : ๋ฌธ์ž์—ด์—์„œ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์žˆ์œผ๋ฉด Match๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
3) split : ์ผ์น˜ํ• ๋•Œ ๋งˆ๋‹ค ๋ฌธ์ž์—ด์ด ๋ถ„ํ• ๋œ ๋ชฉ๋ก์„ ๋ฆฌํ„ด
4) sub : ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์„ ํƒํ•œ ํ…์ŠคํŠธ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค

 

 

๋ฉ”ํƒ€๋ฌธ์ž


[] => ๋ฌธ์ž์„ธํŒ…
\ => ํŠน์ˆ˜์‹œํ€€์Šค(ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์ด์Šค์ผ€์ดํ”„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค)
. => ๋ชจ๋“  ๋ฌธ์ž์ธ๋ฐ ๊ฐœํ–‰๋ฌธ์ž ์ œ์™ธ
^ => start with
$ => end with ๋๋‚˜๋Š”์ง€
* => ๊ณฑํ•˜๊ธฐ , 0๊ฐœ ์ด์ƒ์˜ ๋ฐœ์ƒ
+ => ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐœ์ƒ 
? => 0๊ฐœ ์ด์ƒ์˜ ๋ฐœ์ƒ
{} => ์ •ํ™•ํžˆ ์ง€์ •๋œ ๋ฐœ์ƒํšŸ์ˆ˜
| =>  ํ•˜๋‚˜ ๋˜๋Š” 
() => ์บก์ฒ˜ ๋ฐ ๊ทธ๋ฃนํ™”

 

 

 

ํŠน์ˆ˜์‹œํ€€์Šค


\A : ์ง€์ •๋œ ๋ฌธ์ž๊ฐ€ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘๋ถ€๋ถ„์— ์žˆ์œผ๋ฉด ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
\b : ์ง€์ •๋œ ๋ฌธ์ž๊ฐ€ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘ ๋˜๋Š” ๋์— ์žˆ๋Š” ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด  r"\bain ๋ฌธ์ž์—ด์ด ์›์‹œ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ํ™•์ธ
\B : ์ง€์ •๋œ ๋ฌธ์ž๊ฐ€ ์‹œ์ž‘ ๋˜๋Š” ๋์ด์•„๋‹Œ ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
\d : ๋ฌธ์ž์—ด์— ์ˆซ์ž(0-9)๊ฐ€ ํฌํ•จ๋œ ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
\D : ๋ฌธ์ž์—ด์— ์ˆซ์ž๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๋Š” ์ผ์น˜ ํ•ญ๋ชฉ์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
\s : ๋ฌธ์ž์—ด์— ๊ณต๋ฐฑ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ์ผ์น˜ ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
\S : ๋ฌธ์ž์—ด์— ๊ณต๋ฐฑ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๋Š” ์ผ์น˜ ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
\w : ๋ฌธ์ž์—ด์— ์ž„์˜์˜ ๋‹จ์–ด ๋ฌธ์ž ((a-z), (0-9)๊นŒ์ง€์˜ ์ˆซ์ž ๋ฐ ๋ฐ‘์ค„)๊ณผ ํฌํ•จ๋œ ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
\W : ๋ฌธ์ž์—ด์— ๋‹จ์–ด๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์€ ์ผ์น˜ ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
\Z : ์ง€์ •๋œ ๋ฌธ์ž๊ฐ€ ๋ฌธ์ž์—ด ๋์— ์žˆ์œผ๋ฉด ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด

์„ธํŠธ : ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ํ•œ ์Œ์˜ ๋Œ€๊ด„ํ˜ธ์•ˆ์— ์žˆ๋Š” ๋ฌธ์ž ์„ธํŠธ
[arn] : ์ง€์ •๋œ ๋ฌธ์ž (a,r,n) ์ค‘ ํ•˜๋‚˜๊ฐ€ ์กด์žฌํ•˜๋Š” ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
[a-n] : a์™€ n์‚ฌ์ด์˜ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ๋ชจ๋“  ์†Œ๋ฌธ์ž์— ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
[^arn] : (a,r,n) ์ œ์™ธํ•œ ๋ชจ๋“  ๋ชฌ์ž์— ๋Œ€ํ•œ ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
[0123] : ์ง€์ •๋œ ์ˆซ์ž (0,1,2,3) ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•˜๋Š” ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
[0-9] : 0์—์„œ 9์‚ฌ์ด์— ๋ชจ๋“  ์ˆซ์ž์— ๋Œ€ํ•ด ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
[0-5][0-9] : 00๊ณผ 59 ์ค‘ ๋‘์ž๋ฆฌ ์ˆซ์ž์— ๋Œ€ํ•œ ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
[a-z][A-z] : a์™€ z ์‚ฌ์ด ์†Œ๋ฌธ์ž ๋˜๋Š” ๋Œ€๋ฌธ์ž ์‚ฌ์ด์˜ ์•ŒํŒŒ๋ฒณ์ˆœ ๋ฌธ์ž์— ๋Œ€ํ•œ ์ผ์น˜ํ•ญ๋ชฉ์„ ๋ฆฌํ„ดํ•œ๋‹ค
[+] : ์ง‘ํ•ฉ์—์„œ +, *, . , |, (), $, {} ํŠน๋ณ„ํ•œ ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋‹ค์Œ์„ ์˜๋ฏธํ•œ๋‹ค

 

 

 

 

 


.span()์ผ์น˜์˜ ์‹œ์ž‘์œ„์น˜์™€ ๋์œ„์น˜๋ฅผ ํฌํ•จํ•˜๋Š” ํŠœํ”Œ์„ ๋ฆฌํ„ด, 
.string() ํ•จ์ˆ˜์— ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ด
.group() ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ๋ฆฌํ„ด

 

 


# span
i = re.search(r"\bX\w", txt)
print(i.span()) #12, 17

 


#String ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด
o = re.search(r"\bX\w", txt)
print(o. string())

 


# group ๋Œ€๋ฌธ์ž s๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋‹จ์–ด
p = re.search(r"\bX\w", txt)
print(p. group()) #spain