[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”] Item06 ์™„๋ฒฝ๊ณต๋žต. ์ •๊ทœ ํ‘œํ˜„์‹

2023. 1. 19. 09:22ใ†JAVA/Effective JAVA

728x90

 

item06. ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ”ผํ•˜๋ผ. 

" p32. ์ •๊ทœ ํ‘œํ˜„์‹"

: item06 ์™„๋ฒฝ๊ณต๋žต 2๋ฒˆ์งธ ์‹œ๊ฐ„์—๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” ๊ฐ•์˜์—์„œ ์ •๊ทœํ‘œํ˜„์‹์„ ์ž์„ธํžˆ ๋‹ค๋ฃจ๋Š”๊ฑด ๊ฐ•์˜ ์ฃผ์ œ์™€ ๋งž์ง€๋„ ์•Š๊ณ , ์ •๊ทœํ‘œํ˜„์‹ ์ž์ฒด๋งŒ ํ•ด๋„ ๋‚ด์šฉ์ด ์›Œ๋‚™ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ๋Š” ์ •๊ทœํ‘œํ˜„์‹์ด ์‚ฌ์šฉ๋˜๋Š” ๊ณณ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃฌ๋‹ค. 

 

 

String.matches(String regex)

: ์ด ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„ ์ •๊ทœํ‘œํ˜„์‹์— ๋ถ€ํ•ฉํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ boolean(true, false)๋กœ ๋‚˜ํƒ€๋‚ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. 

๋ณดํ†ต ์ •๊ทœํ‘œํ˜„์‹์„์ด์šฉํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์‹œ์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 

s.matches("^(?=.)M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$");

 

 

String.split(String regex)

: ํ•ด๋‹น ๊ทœ์น™์„ ๊ตฌ๋ถ„์ž๋กœ ํ•˜์—ฌ์„œ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. 

String name = "hyejin,,,20230119,,,effective java study";
name.split(",,,");

์ด๋•Œ splitํ•  ๋ฌธ์ž๊ฐ€ ํ•œ๊ฐœ๋ผ๋ฉด split ๋ฉ”์„œ๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์ง€๋งŒ ์œ„์— ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๊ตฌ๋ถ„์ž๊ฐ€ ํ•œ๋ฌธ์ž ์ด์ƒ์ด๋ผ๋ฉด 

 

๋Œ€์•ˆ : Pattern.compile(regex).split(str);

private static final Pattern SPLIT_PATTERN = Pattern.compile(",,,");

String name = "hyejin,,,20230119,,,effective java study";
SPLIT_PATTERN.split(name);

์ด๋Ÿฐ์‹์œผ๋กœ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด๋‘๊ณ , ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์ ์œผ๋กœ ์ข‹๋‹ค. 

 

 

String.replaceAll(String regex, String replacement), String.replaceFirst(String regex, String replacement) 

: String.replaceAll ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ๋ฌธ์ž์—ด์ค‘์—์„œ ์ฃผ์–ด์ง„ ์ •๊ทœํ‘œํ˜„์‹์— ๋ถ€ํ•ฉํ•˜๋Š” ๋‚ด์šฉ์„ ํŠน์ • ๋‚ด์šฉ์œผ๋กœ ์น˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. 

String.replcaeFirst ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ๋ฌธ์ž์—ด์ค‘์—์„œ ์ฃผ์–ด์ง„ ์ •๊ทœํ‘œํ˜„์‹์— ๋ถ€ํ•ฉํ•˜๋Š” ๋‚ด์šฉ ์ค‘ ์ฒ˜์Œ์œผ๋กœ ์ฐพ์€ ๋ฌธ์ž ํ•˜๋‚˜๋งŒ ๋ณ€๊ฒฝ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. 

 

์ด๊ฒƒ๋„ ์—ญ์‹œ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค 

๋Œ€์•ˆ : Pattern.compile(regex).matchers(str).replaceAll(repl) 

์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. 

 

 

์ •๊ทœํ‘œํ˜„์‹ ๊ด€๋ จ ์‚ฌ์ดํŠธ 

https://regex101.com/

 

regex101: build, test, and debug regex

Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET.

regex101.com

 

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90