λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

λ¬Έμžμ—΄ μΉ˜ν™˜(Replace) μ‚¬μš©λ²• & 예제

by 5566 2023. 8. 12.

1. μ†Œμ£Όμ œ: λ¬Έμžμ—΄ μΉ˜ν™˜(Replace) λ©”μ†Œλ“œ μ†Œκ°œ

λ¬Έμžμ—΄ μΉ˜ν™˜(Replace)은 λ¬Έμžμ—΄ λ‚΄μ—μ„œ νŠΉμ •ν•œ 문자 λ˜λŠ” νŒ¨ν„΄μ„ λ‹€λ₯Έ 문자둜 λŒ€μ²΄ν•˜λŠ” μž‘μ—…μž…λ‹ˆλ‹€. 이 λ©”μ†Œλ“œλŠ” 맀우 μœ μš©ν•˜λ©°, λ¬Έμžμ—΄ μ²˜λ¦¬μ™€ 데이터 μ „μ²˜λ¦¬ λ“± λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

1.1 λ¬Έμžμ—΄ μΉ˜ν™˜μ˜ κ°œλ…κ³Ό μ—­ν• 

λ¬Έμžμ—΄ μΉ˜ν™˜μ€ 기쑴의 λ¬Έμžμ—΄μ„ λ³€κ²½ν•˜κ±°λ‚˜ νŠΉμ • νŒ¨ν„΄μ„ μ°Ύμ•„ λŒ€μ²΄ν•˜λŠ” 과정을 μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λŠ” 원본 λ¬Έμžμ—΄μ˜ λ‚΄μš©μ„ λ³€κ²½ν•˜μ§€ μ•Šκ³  μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. λ¬Έμžμ—΄ μΉ˜ν™˜μ€ λ‹€μ–‘ν•œ μš©λ„λ‘œ μ‚¬μš©λ˜λ©°, 예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • νŠΉμ • 단어 λ˜λŠ” ꡬ문을 λ‹€λ₯Έ 단어 λ˜λŠ” ꡬ문으둜 λŒ€μ²΄ν•˜λŠ” μž‘μ—…
  • νŠΉμ • νŒ¨ν„΄μ„ μ°Ύμ•„μ„œ μ›ν•˜λŠ” ν˜•νƒœλ‘œ λ³€ν™˜ν•˜λŠ” μž‘μ—…
  • λ¬Έμžμ—΄μ˜ 곡백을 μ œκ±°ν•˜κ±°λ‚˜ λŒ€μ²΄ν•˜λŠ” μž‘μ—… λ“±

1.2 λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ 기본적인 μ‚¬μš©λ²•

λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œλŠ” 각 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ§ˆλ‹€ μ•½κ°„μ˜ 차이가 μžˆμ„ 수 μžˆμœΌλ‚˜, κΈ°λ³Έμ μœΌλ‘œλŠ” λ‹€μŒκ³Ό 같은 ν˜•νƒœλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

new_string = original_string.replace(target, replacement)
  • original_string: μΉ˜ν™˜ λŒ€μƒμ΄ λ˜λŠ” 원본 λ¬Έμžμ—΄μž…λ‹ˆλ‹€.
  • target: λŒ€μ²΄ν•˜κ³ μž ν•˜λŠ” νŠΉμ • 문자 λ˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.
  • replacement: target에 λŒ€ν•΄ μΉ˜ν™˜λ  λ¬Έμžμ—΄μž…λ‹ˆλ‹€.

이 λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ original_string λ‚΄μ—μ„œ target을 μ°Ύμ•„ replacement으둜 λ°”κΎΌ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μΈ new_string을 λ°˜ν™˜ν•©λ‹ˆλ‹€. μ΄λ•Œ, original_string μžμ²΄λŠ” λ³€κ²½λ˜μ§€ μ•ŠμœΌλ©°, new_string은 기쑴의 original_string을 λŒ€μ²΄ν•œ κ²°κ³Όλ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

1.1 λ¬Έμžμ—΄ μΉ˜ν™˜μ˜ κ°œλ…κ³Ό μ—­ν• 

λ¬Έμžμ—΄ μΉ˜ν™˜(Replace)은 λ¬Έμžμ—΄ λ‚΄μ—μ„œ νŠΉμ •ν•œ 문자 λ˜λŠ” νŒ¨ν„΄μ„ λ‹€λ₯Έ 문자둜 λŒ€μ²΄ν•˜λŠ” μž‘μ—…μž…λ‹ˆλ‹€. 이 μž‘μ—…μ„ 톡해 μš°λ¦¬λŠ” 원본 λ¬Έμžμ—΄μ„ λ³€κ²½ν•˜μ§€ μ•Šκ³  μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ μƒμ„±ν•˜λ©°, ν•„μš”μ— 따라 νŠΉμ • λ¬Έμžλ‚˜ νŒ¨ν„΄μ„ λ‹€λ₯Έ 문자둜 λŒ€μ²΄ν•©λ‹ˆλ‹€.

λ¬Έμžμ—΄ μΉ˜ν™˜μ€ λ‹€μ–‘ν•œ μš©λ„λ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, ν…μŠ€νŠΈ μ²˜λ¦¬λ‚˜ 데이터 μ „μ²˜λ¦¬ μž‘μ—…μ—μ„œ 일괄적인 변경이 ν•„μš”ν•  λ•Œ μœ μš©ν•˜κ²Œ ν™œμš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ•„λž˜μ™€ 같은 μƒν™©μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • νŠΉμ • 단어λ₯Ό λ‹€λ₯Έ λ‹¨μ–΄λ‘œ λŒ€μ²΄ν•˜λŠ” μž‘μ—…: 예λ₯Ό λ“€μ–΄, "apple"을 "banana"둜 λŒ€μ²΄ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • νŠΉμ • νŒ¨ν„΄μ„ μ°Ύμ•„μ„œ λŒ€μ²΄ν•˜λŠ” μž‘μ—…: 예λ₯Ό λ“€μ–΄, μ „ν™”λ²ˆν˜Έ ν˜•μ‹μ„ ν†΅μΌν•˜κΈ° μœ„ν•΄ "###-####" ν˜•μ‹μ„ "###-###-####"둜 λ³€κ²½ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ¬Έμžμ—΄ λ‚΄μ˜ 곡백을 μ œκ±°ν•˜κ±°λ‚˜ λŒ€μ²΄ν•˜λŠ” μž‘μ—…: 예λ₯Ό λ“€μ–΄, "Hello World"의 곡백을 μ œκ±°ν•˜μ—¬ "HelloWorld"둜 λ³€κ²½ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ κ°„νŽΈν•˜κ³  λΉ λ₯΄κ²Œ λ¬Έμžμ—΄ λ‚΄μ—μ„œ μ›ν•˜λŠ” νŒ¨ν„΄μ„ μ°Ύμ•„ λŒ€μ²΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ¬Έμžμ—΄ 처리 μž‘μ—…μ—μ„œ 맀우 μœ μš©ν•˜κ²Œ ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ μ„Ήμ…˜μ—μ„œλŠ” λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ κΈ°λ³Έ μ‚¬μš©λ²•μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

1.2 λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ 기본적인 μ‚¬μš©λ²•

λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œλŠ” 각 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ§ˆλ‹€ μ•½κ°„μ˜ 차이가 μžˆμ„ 수 μžˆμœΌλ‚˜, κΈ°λ³Έμ μœΌλ‘œλŠ” λ‹€μŒκ³Ό 같은 ν˜•νƒœλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

new_string = original_string.replace(target, replacement)

μœ„μ˜ ν˜•νƒœλ₯Ό λ”°λ₯΄λŠ” λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄ λ‹€μŒκ³Ό 같은 κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

  • original_string: μΉ˜ν™˜ λŒ€μƒμ΄ λ˜λŠ” 원본 λ¬Έμžμ—΄μž…λ‹ˆλ‹€.
  • target: λŒ€μ²΄ν•˜κ³ μž ν•˜λŠ” νŠΉμ • 문자 λ˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.
  • replacement: target에 λŒ€ν•΄ μΉ˜ν™˜λ  λ¬Έμžμ—΄μž…λ‹ˆλ‹€.

이 λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ original_string λ‚΄μ—μ„œ target을 μ°Ύμ•„ replacement으둜 λ°”κΎΌ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μΈ new_string을 λ°˜ν™˜ν•©λ‹ˆλ‹€. μ΄λ•Œ, original_string μžμ²΄λŠ” λ³€κ²½λ˜μ§€ μ•ŠμœΌλ©°, new_string은 기쑴의 original_string을 λŒ€μ²΄ν•œ κ²°κ³Όλ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό 같은 Python μ½”λ“œλ₯Ό μ‚΄νŽ΄λ΄…μ‹œλ‹€.

sentence = "I like apples"
new_sentence = sentence.replace("apples", "bananas")
print(new_sentence)

μœ„ μ½”λ“œμ—μ„œλŠ” 원본 λ¬Έμžμ—΄ sentenceμ—μ„œ "apples"μ΄λΌλŠ” 단어λ₯Ό "bananas"둜 λŒ€μ²΄ν•˜μ—¬ new_sentence에 μ €μž₯ν•©λ‹ˆλ‹€. 결과적으둜 new_sentenceμ—λŠ” "I like bananas"κ°€ μ €μž₯λ˜μ–΄ 좜λ ₯λ©λ‹ˆλ‹€.

λ‹€μŒμœΌλ‘œ, JavaScriptμ—μ„œμ˜ μ‚¬μš© μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

var sentence = "I like apples";
var newSentence = sentence.replace("apples", "bananas");
console.log(newSentence);

Python μ½”λ“œμ™€ λ™μΌν•œ 역할을 ν•˜λŠ” JavaScript μ½”λ“œμž…λ‹ˆλ‹€. sentenceμ—μ„œ "apples"을 "bananas"둜 λŒ€μ²΄ν•œ κ²°κ³Όλ₯Ό newSentence에 μ €μž₯ν•˜κ³ , 이λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•©λ‹ˆλ‹€.

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹¨μˆœνžˆ 단어λ₯Ό λŒ€μ²΄ν•˜λŠ” μ˜ˆμ‹œλ₯Ό λ³΄μ—¬μ£Όμ—ˆμ§€λ§Œ, λ¬Έμžμ—΄ μΉ˜ν™˜μ€ 더 λ³΅μž‘ν•œ νŒ¨ν„΄μ—λ„ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ μ‚¬μš© 방법과 μ˜ˆμ‹œλ₯Ό 더 μžμ„Ένžˆ 확인할 수 μžˆμœΌλ‹ˆ, ν•΄λ‹Ή λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

1.2 λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ 기본적인 μ‚¬μš©λ²•

λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œλŠ” λ¬Έμžμ—΄ λ‚΄μ—μ„œ νŠΉμ •ν•œ λ¬Έμžλ‚˜ νŒ¨ν„΄μ„ λ‹€λ₯Έ 문자둜 λŒ€μ²΄ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 μš°λ¦¬λŠ” 원본 λ¬Έμžμ—΄μ„ λ³€κ²½ν•˜μ§€ μ•Šκ³  ν•„μš”ν•œ κ²½μš°μ—λ§Œ νŠΉμ • λ¬Έμžλ‚˜ νŒ¨ν„΄μ„ λŒ€μ²΄ν•˜μ—¬ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ 기본적인 μ‚¬μš©λ²•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

new_string = original_string.replace(target, replacement)
  • original_string: μΉ˜ν™˜ λŒ€μƒμ΄ λ˜λŠ” 원본 λ¬Έμžμ—΄μž…λ‹ˆλ‹€.
  • target: λŒ€μ²΄ν•˜κ³ μž ν•˜λŠ” νŠΉμ • 문자 λ˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.
  • replacement: target에 λŒ€ν•΄ μΉ˜ν™˜λ  λ¬Έμžμ—΄μž…λ‹ˆλ‹€.

μœ„μ˜ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄, original_string λ‚΄μ—μ„œ target을 μ°Ύμ•„ replacement으둜 λŒ€μ²΄ν•œ 결과인 new_string을 λ°˜ν™˜ν•©λ‹ˆλ‹€. μ΄λ•Œ, original_string μžμ²΄λŠ” λ³€κ²½λ˜μ§€ μ•ŠμœΌλ©°, new_string은 λ³€κ²½λœ λ¬Έμžμ—΄μ„ λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό 같은 Python μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

sentence = "I like apples"
new_sentence = sentence.replace("apples", "bananas")
print(new_sentence)

μœ„ μ½”λ“œμ—μ„œλŠ” 원본 λ¬Έμžμ—΄ sentenceμ—μ„œ "apples"μ΄λΌλŠ” 단어λ₯Ό "bananas"둜 λŒ€μ²΄ν•˜μ—¬ new_sentence에 μ €μž₯ν•©λ‹ˆλ‹€. 결과적으둜 new_sentenceμ—λŠ” "I like bananas"이 μ €μž₯되고, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

λ‹€μŒμœΌλ‘œ, JavaScriptμ—μ„œμ˜ μ‚¬μš© μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

var sentence = "I like apples";
var newSentence = sentence.replace("apples", "bananas");
console.log(newSentence);

μœ„ μ½”λ“œλŠ” Python μ½”λ“œμ™€ λ™μΌν•œ κΈ°λŠ₯을 JavaScript둜 μž‘μ„±ν•œ κ²ƒμž…λ‹ˆλ‹€. sentenceμ—μ„œ "apples"을 "bananas"둜 λŒ€μ²΄ν•œ κ²°κ³Όλ₯Ό newSentence에 μ €μž₯ν•˜κ³ , 이λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•©λ‹ˆλ‹€.

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹¨μˆœνžˆ 단어λ₯Ό λŒ€μ²΄ν•˜λŠ” μ˜ˆμ‹œλ₯Ό λ³΄μ—¬μ£Όμ—ˆμ§€λ§Œ, λ¬Έμžμ—΄ μΉ˜ν™˜μ€ 더 λ³΅μž‘ν•œ νŒ¨ν„΄μ—λ„ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ μ‚¬μš© 방법과 μ˜ˆμ‹œλ₯Ό 더 μžμ„Ένžˆ 확인할 수 μžˆμœΌλ‹ˆ, ν•΄λ‹Ή λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

2. μ†Œμ£Όμ œ: λ¬Έμžμ—΄ μΉ˜ν™˜μ˜ κΈ°λ³Έ μ‚¬μš©λ²•

λ¬Έμžμ—΄ μΉ˜ν™˜μ€ 원본 λ¬Έμžμ—΄μ—μ„œ νŠΉμ • λ¬Έμžλ‚˜ νŒ¨ν„΄μ„ μ°Ύμ•„ λ‹€λ₯Έ 문자둜 λŒ€μ²΄ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 μš°λ¦¬λŠ” 원본 λ¬Έμžμ—΄μ„ λ³€κ²½ν•˜μ§€ μ•Šκ³  ν•„μš”μ— 따라 νŠΉμ • λΆ€λΆ„λ§Œ λ³€κ²½λœ λ¬Έμžμ—΄μ„ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ κΈ°λ³Έ μ‚¬μš©λ²•μ€ μ–Έμ–΄λ§ˆλ‹€ μ•½κ°„μ”© λ‹€λ₯Ό 수 μžˆμœΌλ‚˜, λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” ν˜•νƒœλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

new_string = original_string.replace(target, replacement)

μœ„ ν˜•νƒœλ₯Ό λ”°λ₯΄λŠ” λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄, original_string λ‚΄μ—μ„œ target을 μ°Ύμ•„ replacement으둜 λŒ€μ²΄ν•œ 결과인 new_string을 λ°˜ν™˜ν•©λ‹ˆλ‹€. λ™μž‘ 과정은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. original_stringμ—μ„œ target을 μ°ΎμŠ΅λ‹ˆλ‹€.
  2. 찾은 target을 replacement으둜 λŒ€μ²΄ν•©λ‹ˆλ‹€.
  3. λŒ€μ²΄λœ 결과인 new_string을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

μœ„ κ³Όμ •μ—μ„œ original_string μžμ²΄λŠ” λ³€κ²½λ˜μ§€ μ•ŠμœΌλ©°, new_stringμ—λŠ” λ³€κ²½λœ κ²°κ³Ό λ¬Έμžμ—΄μ΄ λ‹΄κ²¨μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, Pythonμ—μ„œμ˜ μ‚¬μš© μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

sentence = "I like apples"
new_sentence = sentence.replace("apples", "bananas")
print(new_sentence)

μœ„ μ½”λ“œμ—μ„œλŠ” 원본 λ¬Έμžμ—΄ sentenceμ—μ„œ "apples"μ΄λΌλŠ” 단어λ₯Ό "bananas"둜 λŒ€μ²΄ν•˜μ—¬ new_sentence에 μ €μž₯ν•©λ‹ˆλ‹€. 결과적으둜 new_sentenceμ—λŠ” "I like bananas"κ°€ μ €μž₯되고, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

JavaScriptμ—μ„œμ˜ μ‚¬μš© μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

var sentence = "I like apples";
var newSentence = sentence.replace("apples", "bananas");
console.log(newSentence);

μœ„ μ½”λ“œλŠ” Python μ½”λ“œμ™€ λ™μΌν•œ κΈ°λŠ₯을 JavaScript둜 μž‘μ„±ν•œ κ²ƒμž…λ‹ˆλ‹€. sentenceμ—μ„œ "apples"을 "bananas"둜 λŒ€μ²΄ν•˜μ—¬ newSentence에 μ €μž₯ν•˜κ³ , 이λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•©λ‹ˆλ‹€.

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹¨μˆœνžˆ 단어λ₯Ό λŒ€μ²΄ν•˜λŠ” 경우λ₯Ό λ³΄μ—¬μ£Όμ—ˆμ§€λ§Œ, λ¬Έμžμ—΄ μΉ˜ν™˜μ€ 더 λ³΅μž‘ν•œ νŒ¨ν„΄μ—λ„ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 각 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ μ‚¬μš© 방법과 μ˜ˆμ‹œλ₯Ό 더 μžμ„Ένžˆ 확인할 수 μžˆμœΌλ‹ˆ, ν•΄λ‹Ή λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

2. μ†Œμ£Όμ œ: λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ νŒŒλΌλ―Έν„°μ™€ λ°˜ν™˜κ°’μ— λŒ€ν•΄ μ„€λͺ…ν•œλ‹€.

λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œλŠ” λŒ€λΆ€λΆ„ 원본 λ¬Έμžμ—΄μ„ λ³€κ²½ν•˜μ§€ μ•Šκ³ , νŠΉμ • λ¬Έμžλ‚˜ νŒ¨ν„΄μ„ μ°Ύμ•„ λ‹€λ₯Έ 문자둜 λŒ€μ²΄ν•œ 결과인 μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ λ©”μ†Œλ“œλŠ” λ‹€μŒκ³Ό 같은 νŒŒλΌλ―Έν„°λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

  • original_string: λ¬Έμžμ—΄ μΉ˜ν™˜ λŒ€μƒμ΄ λ˜λŠ” 원본 λ¬Έμžμ—΄μž…λ‹ˆλ‹€. μΉ˜ν™˜μ΄ μ΄λ£¨μ–΄μ§€λŠ” λŒ€μƒμœΌλ‘œμ„œ, 이 λ¬Έμžμ—΄μ€ λ³€κ²½λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • target: λŒ€μ²΄ν•˜κ³ μž ν•˜λŠ” νŠΉμ • 문자 λ˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€. 이 문자 λ˜λŠ” νŒ¨ν„΄μ€ original_string λ‚΄μ—μ„œ 찾아지며, μΉ˜ν™˜λ©λ‹ˆλ‹€.
  • replacement: target에 λŒ€ν•΄ μΉ˜ν™˜λ  λ¬Έμžμ—΄μž…λ‹ˆλ‹€. target을 찾은 μœ„μΉ˜μ— λŒ€μ²΄ν•  λ¬Έμžμ—΄λ‘œ λŒ€μ²΄ν•©λ‹ˆλ‹€.

μœ„μ˜ νŒŒλΌλ―Έν„°λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄, μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 λ°˜ν™˜κ°’μ€ λ³€κ²½λœ κ²°κ³Όλ₯Ό λ‹΄κ³  μžˆλŠ” λ¬Έμžμ—΄μž…λ‹ˆλ‹€. 원본 λ¬Έμžμ—΄μΈ original_string은 λ³€κ²½λ˜μ§€ μ•ŠμœΌλ©°, μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ€ λ©”μ†Œλ“œ 호좜 결과인 λ°˜ν™˜κ°’μœΌλ‘œ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, Pythonμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμΈ replace()의 νŒŒλΌλ―Έν„°μ™€ λ°˜ν™˜κ°’μ„ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

original_string = "I like apples"
target = "apples"
replacement = "bananas"

new_string = original_string.replace(target, replacement)

μœ„ μ½”λ“œμ—μ„œ original_string은 "I like apples"이고, target은 "apples", replacement은 "bananas"μž…λ‹ˆλ‹€. replace() λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄, target인 "apples"을 replacement인 "bananas"둜 λŒ€μ²΄ν•˜μ—¬ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ μƒμ„±ν•©λ‹ˆλ‹€. 이 κ²°κ³ΌλŠ” new_string에 ν• λ‹Ήλ©λ‹ˆλ‹€. new_string은 "I like bananas"λ₯Ό 담은 λ¬Έμžμ—΄μž…λ‹ˆλ‹€. μ΄λ•Œ, original_string은 λ³€κ²½λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ μœ μ§€λ©λ‹ˆλ‹€.

각 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œμ˜ νŒŒλΌλ―Έν„°μ™€ λ°˜ν™˜κ°’μ€ μ–Έμ–΄λ§ˆλ‹€ μ‘°κΈˆμ”© λ‹€λ₯Ό 수 μžˆμœΌλ―€λ‘œ, ν•΄λ‹Ή μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€. μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œμ—μ„œλŠ” λ©”μ†Œλ“œμ— λŒ€ν•œ μžμ„Έν•œ μ„€λͺ…κ³Ό μ˜ˆμ‹œλ₯Ό μ œκ³΅ν•˜κ³  μžˆμœΌλ―€λ‘œ, ν•„μš”ν•œ 경우 μ°Έκ³ ν•˜μ‹œλ©΄ 도움이 λ©λ‹ˆλ‹€.

2. μ†Œμ£Όμ œ: λ¬Έμžμ—΄ μΉ˜ν™˜ μ˜ˆμ‹œλ₯Ό 톡해 μ‹€μ œ μ‚¬μš©λ²•μ„ μ†Œκ°œν•œλ‹€.

λ¬Έμžμ—΄ μΉ˜ν™˜μ€ λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. μ‹€μ œ μ‚¬μš© μ˜ˆμ‹œλ₯Ό 톡해 λ¬Έμžμ—΄ μΉ˜ν™˜μ˜ μ‚¬μš©λ²•μ„ μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ 1: 단어 λŒ€μ²΄

sentence = "I like apples"
new_sentence = sentence.replace("apples", "bananas")
print(new_sentence)

μœ„μ˜ μ˜ˆμ‹œλŠ” Pythonμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜μ—¬ νŠΉμ • 단어λ₯Ό λŒ€μ²΄ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€. sentence λ³€μˆ˜μ—λŠ” "I like apples"λΌλŠ” λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 λ¬Έμžμ—΄μ—μ„œ "apples"μ΄λΌλŠ” 단어λ₯Ό "bananas"둜 λŒ€μ²΄ν•˜μ—¬ new_sentence λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. 결과적으둜 new_sentenceμ—λŠ” "I like bananas"κ°€ μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ 2: νŒ¨ν„΄ λŒ€μ²΄

var title = "Hello, {name}!"
var name = "John";
var newTitle = title.replace("{name}", name);
console.log(newTitle);

μœ„μ˜ μ˜ˆμ‹œλŠ” JavaScriptμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜μ—¬ νŒ¨ν„΄μ„ λŒ€μ²΄ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€. title λ³€μˆ˜μ—λŠ” "Hello, {name}!"μ΄λΌλŠ” λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 λ¬Έμžμ—΄μ—μ„œ "{name}"μ΄λΌλŠ” νŒ¨ν„΄μ„ name λ³€μˆ˜μ˜ 값인 "John"으둜 λŒ€μ²΄ν•˜μ—¬ newTitle λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. 결과적으둜 newTitleμ—λŠ” "Hello, John!"이 μ €μž₯되며, 이λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ 3: λŒ€μ†Œλ¬Έμž λ³€κ²½

text = "PYTHON"
lower_text = text.lower()
upper_text = text.upper()
print(lower_text)
print(upper_text)

μœ„μ˜ μ˜ˆμ‹œλŠ” Pythonμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ˜ λŒ€μ†Œλ¬Έμžλ₯Ό λ³€κ²½ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€. text λ³€μˆ˜μ—λŠ” "PYTHON"μ΄λΌλŠ” λŒ€λ¬Έμž λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. lower() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ text의 λͺ¨λ“  문자λ₯Ό μ†Œλ¬Έμžλ‘œ λ³€κ²½ν•œ κ²°κ³Όλ₯Ό lower_text λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. 결과적으둜 lower_textμ—λŠ” "python"이 μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ, upper() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ text의 λͺ¨λ“  문자λ₯Ό λŒ€λ¬Έμžλ‘œ λ³€κ²½ν•œ κ²°κ³Όλ₯Ό upper_text λ³€μˆ˜μ— μ €μž₯ν•˜μ—¬ 좜λ ₯ν•©λ‹ˆλ‹€.

각 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ 더 λ‹€μ–‘ν•œ 상황에 ν™œμš©ν•  수 있으며, μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œμ—μ„œ 더 λ§Žμ€ μ˜ˆμ‹œμ™€ μ‚¬μš©λ²•μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ ν•„μš”ν•œ 경우 ν•΄λ‹Ή μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ—¬ 더 λ§Žμ€ 정보λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμžμ—΄ μΉ˜ν™˜ μ˜ˆμ‹œλ₯Ό 톡해 μ‹€μ œ μ‚¬μš©λ²•μ„ μ†Œκ°œν•œλ‹€.

λ¬Έμžμ—΄ μΉ˜ν™˜μ€ λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. μ‹€μ œ μ‚¬μš© μ˜ˆμ‹œλ₯Ό 톡해 λ¬Έμžμ—΄ μΉ˜ν™˜μ˜ μ‚¬μš©λ²•μ„ μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ 1: 단어 λŒ€μ²΄

sentence = "I like apples"
new_sentence = sentence.replace("apples", "bananas")
print(new_sentence)

μœ„μ˜ μ˜ˆμ‹œλŠ” Pythonμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜μ—¬ νŠΉμ • 단어λ₯Ό λŒ€μ²΄ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

  1. sentence λ³€μˆ˜μ—λŠ” "I like apples"λΌλŠ” λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  2. ν•΄λ‹Ή λ¬Έμžμ—΄μ—μ„œ replace() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ "apples"μ΄λΌλŠ” 단어λ₯Ό "bananas"둜 λŒ€μ²΄ν•©λ‹ˆλ‹€.

  3. λŒ€μ²΄λœ κ²°κ³ΌλŠ” new_sentence λ³€μˆ˜μ— μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

결과적으둜 new_sentenceμ—λŠ” "I like bananas"κ°€ μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.

μ˜ˆμ‹œ 2: νŒ¨ν„΄ λŒ€μ²΄

var title = "Hello, {name}!"
var name = "John";
var newTitle = title.replace("{name}", name);
console.log(newTitle);

μœ„μ˜ μ˜ˆμ‹œλŠ” JavaScriptμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜μ—¬ νŒ¨ν„΄μ„ λŒ€μ²΄ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

  1. title λ³€μˆ˜μ—λŠ” "Hello, {name}!"μ΄λΌλŠ” λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  2. ν•΄λ‹Ή λ¬Έμžμ—΄μ—μ„œ replace() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ "{name}"μ΄λΌλŠ” νŒ¨ν„΄μ„ name λ³€μˆ˜μ˜ 값인 "John"으둜 λŒ€μ²΄ν•©λ‹ˆλ‹€.

  3. λŒ€μ²΄λœ κ²°κ³ΌλŠ” newTitle λ³€μˆ˜μ— μ €μž₯되며, 이λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•©λ‹ˆλ‹€.

결과적으둜 newTitleμ—λŠ” "Hello, John!"이 μ €μž₯되며, 이λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.

μ˜ˆμ‹œ 3: λŒ€μ†Œλ¬Έμž λ³€κ²½

text = "PYTHON"
lower_text = text.lower()
upper_text = text.upper()
print(lower_text)
print(upper_text)

μœ„μ˜ μ˜ˆμ‹œλŠ” Pythonμ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ˜ λŒ€μ†Œλ¬Έμžλ₯Ό λ³€κ²½ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

  1. text λ³€μˆ˜μ—λŠ” "PYTHON"μ΄λΌλŠ” λŒ€λ¬Έμž λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  2. ν•΄λ‹Ή λ¬Έμžμ—΄μ—μ„œ lower() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ text의 λͺ¨λ“  문자λ₯Ό μ†Œλ¬Έμžλ‘œ λ³€κ²½ν•œ κ²°κ³Όλ₯Ό lower_text λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.

  3. 결과적으둜 lower_textμ—λŠ” "python"이 μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

  4. λ§ˆμ°¬κ°€μ§€λ‘œ, upper() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ text의 λͺ¨λ“  문자λ₯Ό λŒ€λ¬Έμžλ‘œ λ³€κ²½ν•œ κ²°κ³Όλ₯Ό upper_text λ³€μˆ˜μ— μ €μž₯ν•˜μ—¬ 좜λ ₯ν•©λ‹ˆλ‹€.

각 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ 더 λ‹€μ–‘ν•œ 상황에 ν™œμš©ν•  수 있으며, μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œμ—μ„œ 더 λ§Žμ€ μ˜ˆμ‹œμ™€ μ‚¬μš©λ²•μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ ν•„μš”ν•œ 경우 ν•΄λ‹Ή μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ—¬ 더 λ§Žμ€ 정보λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

3. μ†Œμ£Όμ œ: μ •κ·œ ν‘œν˜„μ‹μ„ μ΄μš©ν•œ λ¬Έμžμ—΄ μΉ˜ν™˜

μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄ νŒ¨ν„΄ 검색 및 λŒ€μ²΄μ— μœ μš©ν•œ λ„κ΅¬λ‘œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ„ μ΄μš©ν•œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ 톡해 μ–΄λ–»κ²Œ νŒ¨ν„΄μ„ μ°Ύκ³  λŒ€μ²΄ν•  수 μžˆλŠ”μ§€ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ˜ κΈ°λ³Έ κ°œλ…

μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄μ—μ„œ νŠΉμ • νŒ¨ν„΄μ„ μ°Ύκ±°λ‚˜ λŒ€μ²΄ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” νŒ¨ν„΄ 기반의 ν‘œν˜„ λ°©λ²•μž…λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ€ νŠΉμˆ˜ν•œ ꡬ문과 메타 문자λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ„ 검색, μΆ”μΆœ, λ³€κ²½ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

μ˜ˆμ‹œ 1: 숫자 μΆ”μΆœ

import re

text = "Hello 123 World 456"
numbers = re.findall('\d+', text)
print(numbers)

μœ„μ˜ μ˜ˆμ‹œλŠ” Pythonμ—μ„œ μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ—μ„œ 숫자λ₯Ό μΆ”μΆœν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

  1. import reλ₯Ό μ‚¬μš©ν•˜μ—¬ Python의 λ‚΄μž₯ λͺ¨λ“ˆμΈ reλ₯Ό μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. text λ³€μˆ˜μ—λŠ” "Hello 123 World 456"λΌλŠ” λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.findall() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ '\d+'을 text에 μ μš©ν•˜μ—¬ 숫자λ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€. '\d+'λŠ” μ—°μ†λœ ν•˜λ‚˜ μ΄μƒμ˜ 숫자λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

  4. μΆ”μΆœλœ μˆ«μžλŠ” numbers λ³€μˆ˜μ— μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

결과적으둜 numbersμ—λŠ” ['123', '456']κ°€ μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.

μ˜ˆμ‹œ 2: 단어 λŒ€μ²΄

import re

sentence = "I like apples"
new_sentence = re.sub('apples', 'bananas', sentence)
print(new_sentence)

μœ„μ˜ μ˜ˆμ‹œλŠ” Pythonμ—μ„œ μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ νŠΉμ • 단어λ₯Ό λŒ€μ²΄ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

  1. import reλ₯Ό μ‚¬μš©ν•˜μ—¬ Python의 λ‚΄μž₯ λͺ¨λ“ˆμΈ reλ₯Ό μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. sentence λ³€μˆ˜μ—λŠ” "I like apples"μ΄λΌλŠ” λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ 'apples'을 sentence에 μ μš©ν•˜μ—¬ "apples"을 "bananas"둜 λŒ€μ²΄ν•©λ‹ˆλ‹€.

  4. λŒ€μ²΄λœ κ²°κ³ΌλŠ” new_sentence λ³€μˆ˜μ— μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

결과적으둜 new_sentenceμ—λŠ” "I like bananas"κ°€ μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ΄μš©ν•œ λ¬Έμžμ—΄ μΉ˜ν™˜μ΄ λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ μžμ„Έν•œ μ„€λͺ…κ³Ό λ‹€μ–‘ν•œ νŒ¨ν„΄μ„ ν™•μΈν•˜λ €λ©΄ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ˜ κ°œλ…κ³Ό 역할에 λŒ€ν•΄ κ°„λž΅ν•˜κ²Œ μ„€λͺ…ν•œλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄μ—μ„œ νŠΉμ • νŒ¨ν„΄μ„ μ°Ύκ±°λ‚˜ λŒ€μ²΄ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” νŒ¨ν„΄ 기반의 ν‘œν˜„ λ°©λ²•μž…λ‹ˆλ‹€.

κ°œλ…

μ •κ·œ ν‘œν˜„μ‹μ€ νŠΉμ • νŒ¨ν„΄μ„ λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄ 검색, μΆ”μΆœ, 변경을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ νŒ¨ν„΄μ€ μ •κ·œ ν‘œν˜„μ‹μ˜ ꡬ문과 메타 문자λ₯Ό μ‚¬μš©ν•˜μ—¬ ν‘œν˜„λ©λ‹ˆλ‹€.

μ—­ν• 

μ •κ·œ ν‘œν˜„μ‹μ€ λ‹€μŒκ³Ό 같은 역할을 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  1. λ¬Έμžμ—΄ 검색: μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ νŠΉμ • νŒ¨ν„΄μ˜ λ¬Έμžμ—΄μ„ 검색할 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, νŠΉμ • 단어, 숫자, 이메일 μ£Όμ†Œ, μ „ν™”λ²ˆν˜Έ λ“±κ³Ό 같은 νŒ¨ν„΄μ„ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

  2. λ¬Έμžμ—΄ μΆ”μΆœ: μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ νŠΉμ • νŒ¨ν„΄μ˜ λΆ€λΆ„ λ¬Έμžμ—΄μ„ μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, νŠΉμ • νŒ¨ν„΄μ„ 가진 단어, 숫자 λ˜λŠ” 이메일 도메인 등을 μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  3. λ¬Έμžμ—΄ λŒ€μ²΄: μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ νŠΉμ • νŒ¨ν„΄μ„ λ‹€λ₯Έ λ¬Έμžμ—΄λ‘œ λŒ€μ²΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, νŠΉμ • 단어λ₯Ό λ‹€λ₯Έ λ‹¨μ–΄λ‘œ λŒ€μ²΄ν•˜κ±°λ‚˜, νŠΉμ • λ¬Έμžμ—΄μ„ μ‚­μ œν•˜κ±°λ‚˜, νŠΉμ • ν˜•μ‹μ— λ§žμΆ”μ–΄ λ¬Έμžμ—΄μ„ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  4. μœ νš¨μ„± 검사: μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ νŠΉμ • ν˜•μ‹μ— λ§žλŠ” λ¬Έμžμ—΄μΈμ§€ μœ νš¨μ„±μ„ 검사할 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 이메일 μ£Όμ†Œλ‚˜ μ „ν™”λ²ˆν˜Έκ°€ μœ νš¨ν•œ ν˜•μ‹μΈμ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄ μ²˜λ¦¬μ— 맀우 μœ μš©ν•œ 도ꡬ이며, λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž˜λ° 언어와 ν…μŠ€νŠΈ νŽΈμ§‘κΈ°μ—μ„œ μ§€μ›λ©λ‹ˆλ‹€. 각 μ–Έμ–΄λ‚˜ 툴의 λ¬Έμ„œμ—μ„œ 더 μžμ„Έν•œ νŒ¨ν„΄ μ‚¬μš©λ²•κ³Ό μ˜ˆμ‹œλ₯Ό 확인할 수 있으며, 효과적으둜 ν™œμš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ ν•™μŠ΅μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄ μΉ˜ν™˜ν•˜λŠ” 방법을 닀룬닀.

μ •κ·œ ν‘œν˜„μ‹μ€ νŠΉμ • νŒ¨ν„΄μ„ μ°Ύμ•„μ„œ λ‹€λ₯Έ λ¬Έμžμ—΄λ‘œ μΉ˜ν™˜ν•˜λŠ”λ° μ‚¬μš©ν•  수 있으며, λ‹€μŒμ€ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μœ„ν•œ 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

μ˜ˆμ‹œ 1: re.sub() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 단어 λŒ€μ²΄ν•˜κΈ°

Python의 re λͺ¨λ“ˆμ—μ„œ μ œκ³΅ν•˜λŠ” sub() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ •κ·œ ν‘œν˜„μ‹κ³Ό μΉ˜ν™˜ν•  λ¬Έμžμ—΄μ„ μ‚¬μš©ν•˜μ—¬ μ›ν•˜λŠ” νŒ¨ν„΄μ„ λŒ€μ²΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•„λž˜ μ˜ˆμ‹œλŠ” "apples"을 "bananas"둜 λŒ€μ²΄ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

import re

sentence = "I like apples"
new_sentence = re.sub('apples', 'bananas', sentence)
print(new_sentence)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

  1. import reλ₯Ό μ‚¬μš©ν•˜μ—¬ Python의 λ‚΄μž₯ λͺ¨λ“ˆμΈ reλ₯Ό μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. sentence λ³€μˆ˜μ—λŠ” "I like apples"μ΄λΌλŠ” λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ 'apples'을 sentence에 μ μš©ν•˜μ—¬ "apples"을 "bananas"둜 λŒ€μ²΄ν•©λ‹ˆλ‹€.

  4. λŒ€μ²΄λœ κ²°κ³ΌλŠ” new_sentence λ³€μˆ˜μ— μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

결과적으둜 new_sentenceμ—λŠ” "I like bananas"이 μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.

μ˜ˆμ‹œ 2: sub() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ νŒ¨ν„΄μ— 따라 λŒ€μ²΄ν•˜κΈ°

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ νŒ¨ν„΄μ„ μ§€μ •ν•˜κ³  ν•΄λ‹Ή νŒ¨ν„΄μ— λ§žλŠ” λ¬Έμžμ—΄μ„ λ‹€λ₯Έ λ¬Έμžμ—΄λ‘œ λŒ€μ²΄ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ•„λž˜ μ˜ˆμ‹œμ—μ„œλŠ” 숫자λ₯Ό "X"둜 λŒ€μ²΄ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

import re

text = "I have 4 apples, 7 oranges, and 2 bananas"
new_text = re.sub('\d+', 'X', text)
print(new_text)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

  1. import reλ₯Ό μ‚¬μš©ν•˜μ—¬ Python의 λ‚΄μž₯ λͺ¨λ“ˆμΈ reλ₯Ό μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. text λ³€μˆ˜μ—λŠ” "I have 4 apples, 7 oranges, and 2 bananas"λΌλŠ” λ¬Έμžμ—΄μ΄ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ '\d+'λ₯Ό text에 μ μš©ν•˜μ—¬ 숫자λ₯Ό "X"둜 λŒ€μ²΄ν•©λ‹ˆλ‹€. '\d+'λŠ” μ—°μ†λœ ν•˜λ‚˜ μ΄μƒμ˜ 숫자λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

  4. λŒ€μ²΄λœ κ²°κ³ΌλŠ” new_text λ³€μˆ˜μ— μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

결과적으둜 new_textμ—λŠ” "I have X apples, X oranges, and X bananas"κ°€ μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•œ λ¬Έμžμ—΄ μΉ˜ν™˜μ€ λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ 더 μžμ„Έν•œ μ •μ˜μ™€ μ‚¬μš©λ²•μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹ μ˜ˆμ‹œλ₯Ό 톡해 μ‹€μ œ μ‚¬μš©λ²•μ„ μ†Œκ°œν•œλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ‹€μ–‘ν•œ λ¬Έμžμ—΄ νŒ¨ν„΄μ„ κ²€μƒ‰ν•˜κ³  μΆ”μΆœν•˜λŠ” 방법을 μ˜ˆμ‹œλ₯Ό 톡해 μ„€λͺ…ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ 1: 이메일 μ£Όμ†Œ μΆ”μΆœν•˜κΈ°

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ 주어진 ν…μŠ€νŠΈμ—μ„œ 이메일 μ£Όμ†Œλ₯Ό μΆ”μΆœν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

import re

text = "My email is john@example.com. Please contact me at john@example.com"
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', text)
print(emails)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

  1. import reλ₯Ό μ‚¬μš©ν•˜μ—¬ Python의 λ‚΄μž₯ λͺ¨λ“ˆμΈ reλ₯Ό μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. text λ³€μˆ˜μ—λŠ” 주어진 ν…μŠ€νŠΈκ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.findall() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ '\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}\b'에 ν•΄λ‹Ήλ˜λŠ” λͺ¨λ“  이메일 μ£Όμ†Œλ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€. 이 μ •κ·œ ν‘œν˜„μ‹μ€ 이메일 μ£Όμ†Œμ˜ 일반적인 ν˜•μ‹μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.

  4. μΆ”μΆœλœ 이메일 μ£Όμ†ŒλŠ” emails λ³€μˆ˜μ— μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

결과적으둜 emailsμ—λŠ” ["john@example.com", "john@example.com"]κ°€ μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.

μ˜ˆμ‹œ 2: μ „ν™”λ²ˆν˜Έ μΆ”μΆœν•˜κΈ°

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ ν…μŠ€νŠΈμ—μ„œ μ „ν™”λ²ˆν˜Έλ₯Ό μΆ”μΆœν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

import re

text = "Please call 123-456-7890 for assistance or 987-654-3210 for support"
phone_numbers = re.findall(r'\d{3}-\d{3}-\d{4}', text)
print(phone_numbers)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

  1. import reλ₯Ό μ‚¬μš©ν•˜μ—¬ Python의 λ‚΄μž₯ λͺ¨λ“ˆμΈ reλ₯Ό μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. text λ³€μˆ˜μ—λŠ” 주어진 ν…μŠ€νŠΈκ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.findall() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ '\d{3}-\d{3}-\d{4}'에 ν•΄λ‹Ήλ˜λŠ” λͺ¨λ“  μ „ν™”λ²ˆν˜Έλ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€. 이 μ •κ·œ ν‘œν˜„μ‹μ€ XXX-XXX-XXXX ν˜•μ‹μ˜ μ „ν™”λ²ˆν˜Έλ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.

  4. μΆ”μΆœλœ μ „ν™”λ²ˆν˜ΈλŠ” phone_numbers λ³€μˆ˜μ— μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

결과적으둜 phone_numbersμ—λŠ” ["123-456-7890", "987-654-3210"]이 μ €μž₯되며, 이λ₯Ό 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.

μœ„μ˜ μ˜ˆμ‹œλ“€μ€ μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ ν…μŠ€νŠΈλ‘œλΆ€ν„° νŒ¨ν„΄μ„ μ°Ύμ•„λ‚΄λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ˜ˆμ‹œλ₯Ό 톡해 μ •κ·œ ν‘œν˜„μ‹μ΄ λ‹€μ–‘ν•œ λ¬Έμžμ—΄ 처리 μž‘μ—…μ—μ„œ μœ μš©ν•˜κ²Œ ν™œμš©λ  수 μžˆμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•œ 더 λ§Žμ€ μ˜ˆμ‹œμ™€ 더 μžμ„Έν•œ μ •μ˜ 및 μ‚¬μš©λ²•μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹ μ˜ˆμ‹œλ₯Ό 톡해 μ‹€μ œ μ‚¬μš©λ²•μ„ μ†Œκ°œν•œλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄ 처리 μž‘μ—…μ—μ„œ 맀우 κ°•λ ₯ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. 이λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ˜ νŠΉμ • νŒ¨ν„΄μ„ κ²€μƒ‰ν•˜κ³  μΆ”μΆœν•˜κ±°λ‚˜, νŒ¨ν„΄μ— λ§žλŠ” 뢀뢄을 μΉ˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•„λž˜ μ˜ˆμ‹œλ“€μ„ 톡해 μ •κ·œ ν‘œν˜„μ‹μ˜ μ‹€μ œ μ‚¬μš©λ²•μ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ 1: 이메일 μ£Όμ†Œ μΆ”μΆœν•˜κΈ°

λ¬Έμžμ—΄μ—μ„œ 이메일 μ£Όμ†Œλ₯Ό μΆ”μΆœν•˜λŠ” μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

import re

text = "My email is john@example.com. Please contact me at john@example.com"
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', text)
print(emails)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

  1. re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. λ¬Έμžμ—΄ textμ—λŠ” 주어진 ν…μŠ€νŠΈκ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.findall() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ '\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}\b'에 ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  이메일 μ£Όμ†Œλ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€. 이 μ •κ·œ ν‘œν˜„μ‹μ€ 일반적인 이메일 μ£Όμ†Œ ν˜•μ‹μ„ μ°Ύμ•„λƒ…λ‹ˆλ‹€.

  4. findall() λ©”μ„œλ“œμ˜ 결과인 이메일 μ£Όμ†Œλ“€μ€ emails λ³€μˆ˜μ— μ €μž₯되고, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” 주어진 ν…μŠ€νŠΈμ—μ„œ "john@example.com"κ³Ό "john@example.com" 두 개의 이메일 μ£Όμ†Œλ₯Ό μΆ”μΆœν•˜κ²Œ λ©λ‹ˆλ‹€.

μ˜ˆμ‹œ 2: μ „ν™”λ²ˆν˜Έ μΆ”μΆœν•˜κΈ°

λ¬Έμžμ—΄μ—μ„œ μ „ν™”λ²ˆν˜Έλ₯Ό μΆ”μΆœν•˜λŠ” μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

import re

text = "Please call 123-456-7890 for assistance or 987-654-3210 for support"
phone_numbers = re.findall(r'\d{3}-\d{3}-\d{4}', text)
print(phone_numbers)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

  1. re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. λ¬Έμžμ—΄ textμ—λŠ” 주어진 ν…μŠ€νŠΈκ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.findall() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ '\d{3}-\d{3}-\d{4}'에 ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  μ „ν™”λ²ˆν˜Έλ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€. 이 μ •κ·œ ν‘œν˜„μ‹μ€ XXX-XXX-XXXX ν˜•μ‹μ˜ μ „ν™”λ²ˆν˜Έλ₯Ό μ°Ύμ•„λƒ…λ‹ˆλ‹€.

  4. findall() λ©”μ„œλ“œμ˜ 결과인 μ „ν™”λ²ˆν˜Έλ“€μ€ phone_numbers λ³€μˆ˜μ— μ €μž₯되고, 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” 주어진 ν…μŠ€νŠΈμ—μ„œ "123-456-7890"κ³Ό "987-654-3210" 두 개의 μ „ν™”λ²ˆν˜Έλ₯Ό μΆ”μΆœν•˜κ²Œ λ©λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄ 처리 μž‘μ—…μ—μ„œ λ‹€μ–‘ν•œ μš©λ„λ‘œ ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ˜ˆμ‹œλ₯Ό 톡해 μ •κ·œ ν‘œν˜„μ‹μ˜ μ‹€μ œ μ‚¬μš©λ²•μ„ 이해할 수 있고, 보닀 λ³΅μž‘ν•œ νŒ¨ν„΄μ„ κ²€μƒ‰ν•˜κ±°λ‚˜ μΉ˜ν™˜ν•˜λŠ” 방법을 μŠ΅λ“ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

4. μ†Œμ£Όμ œ: 닀쀑 μΉ˜ν™˜κ³Ό 체이닝

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ 닀쀑 μΉ˜ν™˜μ„ μˆ˜ν–‰ν•˜κ³ , μ—¬λŸ¬ 개의 μ •κ·œ ν‘œν˜„μ‹μ„ μ²΄μ΄λ‹ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

닀쀑 μΉ˜ν™˜

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ—μ„œ μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ λ™μ‹œμ— μΉ˜ν™˜ν•˜λŠ” 방법을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

import re

text = "Hello, my name is John. I am from New York."
new_text = re.sub(r'John', 'David', text)
print(new_text)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

  1. re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. λ¬Έμžμ—΄ textμ—λŠ” 주어진 ν…μŠ€νŠΈκ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹μ„ μ΄μš©ν•΄ textμ—μ„œ 'John'을 'David'둜 μΉ˜ν™˜ν•©λ‹ˆλ‹€.

  4. sub() ν•¨μˆ˜μ˜ κ²°κ³Όλ₯Ό new_text λ³€μˆ˜μ— μ €μž₯ν•˜κ³ , 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” 주어진 ν…μŠ€νŠΈμ—μ„œ 'John'이 'David'둜 μΉ˜ν™˜λœ μƒˆλ‘œμš΄ ν…μŠ€νŠΈκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

체이닝

μ •κ·œ ν‘œν˜„μ‹μ„ μ²΄μ΄λ‹ν•˜μ—¬ μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ μ°Ύκ±°λ‚˜ μΉ˜ν™˜ν•˜λŠ” 방법을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ re.sub() ν•¨μˆ˜μ— μ—¬λŸ¬ 개의 μ •κ·œ ν‘œν˜„μ‹μ„ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€.

import re

text = "Hello, my name is John. I am from New York."
new_text = re.sub(r'John', 'David', text)
new_text = re.sub(r'New York', 'London', new_text)
print(new_text)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

  1. re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. λ¬Έμžμ—΄ textμ—λŠ” 주어진 ν…μŠ€νŠΈκ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 첫 번째 μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ 'John'을 'David'둜, 두 번째 μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ 'New York'λ₯Ό 'London'으둜 μΉ˜ν™˜ν•©λ‹ˆλ‹€.

  4. sub() ν•¨μˆ˜μ˜ κ²°κ³Όλ₯Ό new_text λ³€μˆ˜μ— μ €μž₯ν•˜κ³ , 이λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” 주어진 ν…μŠ€νŠΈμ—μ„œ 'John'이 'David'둜, 'New York'κ°€ 'London'으둜 μ°¨λ‘€λŒ€λ‘œ μΉ˜ν™˜λœ μƒˆλ‘œμš΄ ν…μŠ€νŠΈκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

닀쀑 μΉ˜ν™˜κ³Ό 체이닝을 μ‚¬μš©ν•˜λ©΄ ν•œ λ²ˆμ— μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ³΅μž‘ν•œ λ¬Έμžμ—΄ 처리 μž‘μ—…μ„ 보닀 κ°„νŽΈν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ˜ κ°œλ…κ³Ό ν•„μš”μ„±μ— λŒ€ν•΄ μ„€λͺ…ν•œλ‹€.

닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ€ μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ ν•œ λ²ˆμ— μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ λ™μ‹œμ— μΉ˜ν™˜ν•˜λŠ” μž‘μ—…μ„ λ§ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ¬Έμžμ—΄ 처리 μž‘μ—…μ„ λ”μš± κ°„νŽΈν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ ν•˜λ‚˜μ˜ νŒ¨ν„΄μ„ μΉ˜ν™˜ν•˜λŠ” 것은 λ§Žμ€ μƒν™©μ—μ„œ μœ μš©ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ•Œλ‘œλŠ” ν•œ λ²ˆμ— μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ μ²˜λ¦¬ν•΄μ•Ό ν•  λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이 λ•Œμ—λŠ” 닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜λŠ” 것이 νš¨μœ¨μ μž…λ‹ˆλ‹€.

닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. νŽΈμ˜μ„±: μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ μ›ν•˜λŠ” λŒ€λ‘œ ν•œ λ²ˆμ— μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ—¬λŸ¬ 개의 re.sub() ν•¨μˆ˜ ν˜ΈμΆœμ„ μˆ˜ν–‰ν•˜λŠ” 것보닀 훨씬 νš¨μœ¨μ μž…λ‹ˆλ‹€.

  2. 일괄 처리: 일괄 처리 μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ 닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ€ 맀우 μœ μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, ν…μŠ€νŠΈ λ¬Έμ„œμ—μ„œ νŠΉμ • 단어λ₯Ό ν•œκΊΌλ²ˆμ— λ‹€λ₯Έ λ‹¨μ–΄λ‘œ λ³€κ²½ν•˜κ³  싢은 경우, 닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  νŒ¨ν„΄μ„ ν•œ λ²ˆμ— μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  3. λ³΅μž‘ν•œ λ¬Έμžμ—΄ 처리: μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ„ μ²˜λ¦¬ν•  λ•Œ, λ³΅μž‘ν•œ νŒ¨ν„΄μ„ μ²˜λ¦¬ν•΄μ•Ό ν•  λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ€ μ΄λŸ¬ν•œ λ³΅μž‘ν•œ νŒ¨ν„΄λ“€μ˜ 처리λ₯Ό μ‰½κ²Œ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€.

  4. μ½”λ“œ κ°„κ²°μ„±: 닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜λ©΄ μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€μ‹  μ—¬λŸ¬ 번의 λ¬Έμžμ—΄ 처리 μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ„ ν”Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ 닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ€ 효율적인 λ¬Έμžμ—΄ 처리λ₯Ό μœ„ν•΄ μœ μš©ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ 닀쀑 λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μˆ˜ν–‰ν•˜λŠ” 방법에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

λ¬Έμžμ—΄ μΉ˜ν™˜ λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ 닀쀑 μΉ˜ν™˜μ„ ν•˜λŠ” 방법을 μ†Œκ°œν•œλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ—μ„œ μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ λ™μ‹œμ— μΉ˜ν™˜ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

import re

text = "Hello, my name is John. I am from New York."
new_text = re.sub(r'John', 'David', text)
new_text = re.sub(r'New York', 'London', new_text)
print(new_text)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€:

  1. re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. λ¬Έμžμ—΄ textμ—λŠ” 원본 ν…μŠ€νŠΈκ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 첫 번째 μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ 'John'을 'David'둜, 두 번째 μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ 'New York'λ₯Ό 'London'으둜 μΉ˜ν™˜ν•©λ‹ˆλ‹€.

  4. sub() ν•¨μˆ˜μ˜ κ²°κ³Όλ₯Ό new_text λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.

  5. λ§ˆμ§€λ§‰μœΌλ‘œ, new_textλ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” 주어진 ν…μŠ€νŠΈμ—μ„œ 'John'이 'David'둜, 그리고 'New York'κ°€ 'London'으둜 μ°¨λ‘€λŒ€λ‘œ μΉ˜ν™˜λœ μƒˆλ‘œμš΄ ν…μŠ€νŠΈκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

닀쀑 μΉ˜ν™˜μ€ ν•œ λ²ˆμ— μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ μ²˜λ¦¬ν•΄μ•Ό ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ³΅μž‘ν•œ λ¬Έμžμ—΄ 처리λ₯Ό 보닀 더 μ‰½κ²Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

체이닝을 μ΄μš©ν•˜μ—¬ μ—¬λŸ¬ 개의 μΉ˜ν™˜μ„ μ—°μ†μ μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 방법을 μ„€λͺ…ν•œλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ—μ„œ μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ 순차적으둜 μΉ˜ν™˜ν•˜λŠ” 경우, 체이닝(chaining)을 μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 체이닝을 μ‚¬μš©ν•˜λ©΄ κ°„λ‹¨ν•˜κ²Œ μ—¬λŸ¬ 개의 μΉ˜ν™˜ μž‘μ—…μ„ μ—°μ†μ μœΌλ‘œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

import re

text = "Hello, my name is John. I am from New York."
new_text = re.sub(r'John', 'David', re.sub(r'New York', 'London', text))
print(new_text)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€:

  1. re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•©λ‹ˆλ‹€.

  2. λ¬Έμžμ—΄ textμ—λŠ” 원본 ν…μŠ€νŠΈκ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. 첫 번째 re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 'John'을 'David'둜 μΉ˜ν™˜ν•©λ‹ˆλ‹€.

  4. 두 번째 re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 'New York'λ₯Ό 'London'으둜 μΉ˜ν™˜ν•©λ‹ˆλ‹€. 이 λ•Œ, 첫 번째 μΉ˜ν™˜λœ 결과인 'David'이 μ μš©λ©λ‹ˆλ‹€.

  5. λ§ˆμ§€λ§‰μœΌλ‘œ, sub() ν•¨μˆ˜μ˜ κ²°κ³Όλ₯Ό new_text λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.

  6. new_textλ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

결과적으둜, μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” 주어진 ν…μŠ€νŠΈμ—μ„œ 'John'이 'David'둜, 그리고 'New York'κ°€ 'London'으둜 μ°¨λ‘€λŒ€λ‘œ μΉ˜ν™˜λœ μƒˆλ‘œμš΄ ν…μŠ€νŠΈκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

체이닝을 μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ 개의 μΉ˜ν™˜ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것은 μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ λ§Œλ“€μ–΄μ£Όλ©°, μ½”λ“œμ˜ 가독성을 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

체이닝을 μ΄μš©ν•˜μ—¬ μ—¬λŸ¬ 개의 μΉ˜ν™˜μ„ μ—°μ†μ μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 방법을 μ„€λͺ…ν•œλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ λ™μ‹œμ— μΉ˜ν™˜ν•˜λŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

import re

text = "Hello, my name is John. I am from New York."
new_text = re.sub(r'John', 'David', text)
new_text = re.sub(r'New York', 'London', new_text)
print(new_text)

μœ„μ˜ μ½”λ“œμ—μ„œ λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€:

  1. λ¨Όμ €, μ½”λ“œμ— re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•©λ‹ˆλ‹€. 이 λͺ¨λ“ˆμ€ μ •κ·œ ν‘œν˜„μ‹μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

  2. μ›λž˜μ˜ ν…μŠ€νŠΈλŠ” text λ³€μˆ˜μ— μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 첫 번째 μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μœΌλ‘œ 'John'을 'David'둜 μΉ˜ν™˜ν•©λ‹ˆλ‹€. 이 μž‘μ—…μ˜ κ²°κ³ΌλŠ” new_text에 μ €μž₯λ©λ‹ˆλ‹€.

  4. λ‹€μŒμœΌλ‘œ, re.sub() ν•¨μˆ˜λ₯Ό λ‹€μ‹œ ν˜ΈμΆœν•˜μ—¬ 두 번째 μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μœΌλ‘œ 'New York'λ₯Ό 'London'으둜 μΉ˜ν™˜ν•©λ‹ˆλ‹€. 이 λ•Œ, μ•žμ„œ 첫 번째 μΉ˜ν™˜μ΄ 적용된 new_textλ₯Ό μž…λ ₯으둜 μ‚¬μš©ν•©λ‹ˆλ‹€.

  5. λ§ˆμ§€λ§‰μœΌλ‘œ, new_textλ₯Ό 좜λ ₯ν•˜μ—¬ μΉ˜ν™˜λœ μ΅œμ’… ν…μŠ€νŠΈλ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€.

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” 주어진 ν…μŠ€νŠΈμ—μ„œ 'John'이 'David'둜, 그리고 'New York'κ°€ 'London'으둜 μ°¨λ‘€λŒ€λ‘œ μΉ˜ν™˜λœ μƒˆλ‘œμš΄ ν…μŠ€νŠΈκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 방식을 μ‚¬μš©ν•˜λ©΄ ν•œ λ²ˆμ— μ—¬λŸ¬ 개의 νŒ¨ν„΄μ„ μ²˜λ¦¬ν•  수 μžˆμ–΄ λ³΅μž‘ν•œ λ¬Έμžμ—΄ 처리λ₯Ό κ°„λ‹¨ν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

5. μ†Œμ£Όμ œ: 싀무 ν™œμš© 예제 - URL 링크 λ³€κ²½

체이닝을 ν™œμš©ν•˜μ—¬ URL 링크의 변경을 μ‹€μ œ 싀무 μƒν™©μ—μ„œ μ‚¬μš©ν•˜λŠ” μ˜ˆμ œμ— λŒ€ν•΄ μƒμ„Έν•˜κ²Œ μ„€λͺ…ν•©λ‹ˆλ‹€. 이 μ˜ˆμ œμ—μ„œλŠ” μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ ν…μŠ€νŠΈμ—μ„œ μ—¬λŸ¬ 개의 URL을 μ°Ύμ•„ 각각을 λ‹€λ₯Έ ν˜•μ‹μ˜ 링크둜 λ³€κ²½ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

import re

text = "Visit my website at http://example.com and my blog at http://blog.example.com."
new_text = re.sub(r'http://([a-zA-Z0-9.-]+)', r'<a href="\g<0>">\g<0></a>', text)
print(new_text)

μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€:

  1. λ¨Όμ €, μ½”λ“œμ— re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•©λ‹ˆλ‹€. 이 λͺ¨λ“ˆμ€ μ •κ·œ ν‘œν˜„μ‹μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

  2. μ›λž˜μ˜ ν…μŠ€νŠΈλŠ” text λ³€μˆ˜μ— μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 ν…μŠ€νŠΈμ—λŠ” 두 개의 URL이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μœΌλ‘œ 'http://'λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€. 이 νŒ¨ν„΄μ€ URL의 μ‹œμž‘μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

  4. 찾은 νŒ¨ν„΄μ„ <a href="">URL</a> ν˜•μ‹μœΌλ‘œ λ³€κ²½ν•©λ‹ˆλ‹€. 이 μž‘μ—…μ€ re.sub() ν•¨μˆ˜μ˜ 두 번째 인자둜 주어진 ν˜•μ‹ λ¬Έμžμ—΄μ—μ„œ \g<0>을 μ‚¬μš©ν•˜μ—¬ 찾은 URL을 μ μš©ν•©λ‹ˆλ‹€. λ”°λΌμ„œ, http://example.com은 <a href="http://example.com">http://example.com</a>으둜 λ³€κ²½λ©λ‹ˆλ‹€.

  5. λ§ˆμ§€λ§‰μœΌλ‘œ, λ³€κ²½λœ ν…μŠ€νŠΈμΈ new_textλ₯Ό 좜λ ₯ν•˜μ—¬ κ²°κ³Όλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.

결과적으둜, μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” μ›λž˜μ˜ ν…μŠ€νŠΈμ—μ„œ 두 개의 URL이 <a> νƒœκ·Έλ‘œ λ‘˜λŸ¬μ‹ΈμΈ 링크 ν˜•μ‹μœΌλ‘œ λ³€κ²½λœ ν…μŠ€νŠΈκ°€ 좜λ ₯λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μž‘μ—…μ„ 톡해 ν…μŠ€νŠΈμ—μ„œ URL을 클릭 κ°€λŠ₯ν•œ 링크둜 λ³€ν™˜ν•˜μ—¬ μ›Ή λ¬Έμ„œλ₯Ό 더 μ‚¬μš©μž μΉœν™”μ μœΌλ‘œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ URL 링크λ₯Ό λ³€κ²½ν•˜λŠ” 예제λ₯Ό 톡해 체이닝을 μ‹€μ œ 싀무 상황에 μ μš©ν•  수 μžˆλ‹€λŠ” 점을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

5. μ†Œμ£Όμ œ: μ‹€μ œ μ‹€λ¬΄μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ–΄λ–»κ²Œ ν™œμš©ν•˜λŠ”μ§€ 예제λ₯Ό 톡해 μ„€λͺ…ν•œλ‹€

μ‹€μ œ μ‹€λ¬΄μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ€ 맀우 μœ μš©ν•œ μž‘μ—…μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 ν…μŠ€νŠΈ 데이터λ₯Ό λ³€ν™˜ν•˜κ±°λ‚˜ μ •μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이번 μ˜ˆμ œμ—μ„œλŠ” λ¬Έμžμ—΄ μΉ˜ν™˜μ„ ν™œμš©ν•˜μ—¬ λ‚ μ§œ ν˜•μ‹μ„ ν‘œμ€€ν™”ν•˜λŠ” 과정을 μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€.

import re

text = "Order placed on 20/01/2023. Shipping confirmed on 25-1-23. Delivery expected on 30-01-2023."

# λ‚ μ§œ ν˜•μ‹ MM/DD/YYYY둜 λ³€κ²½
new_text = re.sub(r'(\d{2})/(\d{2})/(\d{4})', r'\2/\1/\3', text)

# λ‚ μ§œ ν˜•μ‹ YYYY/MM/DD둜 λ³€κ²½
new_text = re.sub(r'(\d{2})-(\d{1})-(\d{2})', r'20\3/0\2/\1', new_text)

print(new_text)

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€:

  1. μ½”λ“œμ— re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•  수 있게 ν•©λ‹ˆλ‹€.

  2. 원본 ν…μŠ€νŠΈλŠ” text λ³€μˆ˜μ— μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 ν…μŠ€νŠΈμ—λŠ” λ‹€μ–‘ν•œ ν˜•μ‹μ˜ λ‚ μ§œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 첫 번째 μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μΈ (\d{2})/(\d{2})/(\d{4})을 μ°Ύμ•„ 'μ›”/일/λ…„' ν˜•μ‹μ—μ„œ '일/μ›”/λ…„' ν˜•μ‹μœΌλ‘œ λ³€κ²½ν•©λ‹ˆλ‹€. 이 μž‘μ—…μ„ 톡해 '20/01/2023'이 '01/20/2023'으둜 λ³€κ²½λ©λ‹ˆλ‹€.

  4. re.sub() ν•¨μˆ˜λ₯Ό λ‹€μ‹œ μ‚¬μš©ν•˜μ—¬ 두 번째 μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μΈ (\d{2})-(\d{1})-(\d{2})을 μ°Ύμ•„ '일-μ›”-λ…„' ν˜•μ‹μ—μ„œ 'λ…„/μ›”/일' ν˜•μ‹μœΌλ‘œ λ³€κ²½ν•©λ‹ˆλ‹€. 이 μž‘μ—…μ„ 톡해 '25-1-23'이 '2023/01/25'둜 λ³€κ²½λ©λ‹ˆλ‹€.

  5. λ§ˆμ§€λ§‰μœΌλ‘œ, λ³€κ²½λœ ν…μŠ€νŠΈλ₯Ό new_text λ³€μˆ˜μ— μ €μž₯ν•˜κ³  좜λ ₯ν•˜μ—¬ κ²°κ³Όλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” 주어진 ν…μŠ€νŠΈμ—μ„œ λ‚ μ§œ ν˜•μ‹μ„ ν‘œμ€€ν™”ν•˜κΈ° μœ„ν•΄ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν…μŠ€νŠΈ λ°μ΄ν„°μ˜ λ‚ μ§œλ₯Ό μΌκ΄€λœ ν˜•μ‹μœΌλ‘œ ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μž‘μ—…μ€ 데이터 μ •μ œ, 뢄석 λ˜λŠ” μ‹œκ°ν™” κ³Όμ •μ—μ„œ 많이 μ‚¬μš©λ©λ‹ˆλ‹€.

μ‹€μ œ μ‹€λ¬΄μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ€ λ‹€μ–‘ν•œ μž‘μ—…μ— ν™œμš©λ  수 있으며, 데이터 처리 및 μ „μ²˜λ¦¬ μž‘μ—…μ— ν•„μˆ˜μ μž…λ‹ˆλ‹€. λ§Œμ•½ μˆ˜λ§Žμ€ ν…μŠ€νŠΈ 데이터λ₯Ό 닀룬닀면, λ¬Έμžμ—΄ μΉ˜ν™˜μ„ 효율적으둜 μ‚¬μš©ν•˜μ—¬ λ°μ΄ν„°μ˜ 일관성과 ν‘œν˜„μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

5. μ†Œμ£Όμ œ: URL 링크의 일괄적인 변경을 μœ„ν•΄ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜λŠ” 방법을 μ†Œκ°œν•œλ‹€.

URL 링크의 일괄적인 변경을 μœ„ν•΄ λ¬Έμžμ—΄ μΉ˜ν™˜μ€ μ‹€λ¬΄μ—μ„œ μœ μš©ν•˜κ²Œ ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 ν…μŠ€νŠΈ λ°μ΄ν„°μ—μ„œ μ—¬λŸ¬ 개의 URL을 μ°Ύμ•„ μ›ν•˜λŠ” ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ μ˜ˆμ œμ—μ„œλŠ” μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ ν…μŠ€νŠΈμ—μ„œ μ—¬λŸ¬ 개의 URL을 μ°Ύκ³ , 이λ₯Ό λ‹€λ₯Έ ν˜•μ‹μ˜ 링크둜 μΌκ΄„μ μœΌλ‘œ λ³€κ²½ν•˜λŠ” 방법을 μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€.

import re

text = "Visit my website at http://example.com and my blog at http://blog.example.com."
new_text = re.sub(r'http://([a-zA-Z0-9.-]+)', r'<a href="\g<0>">\g<0></a>', text)
print(new_text)

μœ„μ˜ μ˜ˆμ œμ—μ„œ λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ¦…λ‹ˆλ‹€:

  1. μ½”λ“œμ— re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•  수 있게 ν•©λ‹ˆλ‹€. 이 λͺ¨λ“ˆμ€ URL νŒ¨ν„΄μ„ μ²˜λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

  2. 원본 ν…μŠ€νŠΈλŠ” text λ³€μˆ˜μ— μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 ν…μŠ€νŠΈμ—λŠ” 두 개의 URL이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄ http://([a-zA-Z0-9.-]+)을 μ°ΎμŠ΅λ‹ˆλ‹€. 이 νŒ¨ν„΄μ€ URL의 μ‹œμž‘μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

  4. 찾은 νŒ¨ν„΄μ„ <a href="">URL</a> ν˜•μ‹μœΌλ‘œ λ³€κ²½ν•©λ‹ˆλ‹€. 이 μž‘μ—…μ€ re.sub() ν•¨μˆ˜μ˜ 두 번째 인자둜 주어진 ν˜•μ‹ λ¬Έμžμ—΄μ—μ„œ \g<0>을 μ‚¬μš©ν•˜μ—¬ 찾은 URL을 μ μš©ν•©λ‹ˆλ‹€. λ”°λΌμ„œ http://example.com은 <a href="http://example.com">http://example.com</a>으둜 λ³€κ²½λ©λ‹ˆλ‹€.

  5. λ§ˆμ§€λ§‰μœΌλ‘œ, λ³€κ²½λœ ν…μŠ€νŠΈλ₯Ό new_text에 μ €μž₯ν•˜κ³  좜λ ₯ν•˜μ—¬ κ²°κ³Όλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” 원본 ν…μŠ€νŠΈμ—μ„œ 두 개의 URL이 <a> νƒœκ·Έλ‘œ λ‘˜λŸ¬μ‹ΈμΈ 링크 ν˜•μ‹μœΌλ‘œ λ³€κ²½λœ ν…μŠ€νŠΈκ°€ 좜λ ₯λ©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν…μŠ€νŠΈμ—μ„œ URL을 클릭 κ°€λŠ₯ν•œ 링크둜 λ³€ν™˜ν•˜μ—¬ μ›Ή λ¬Έμ„œλ₯Ό 더 μ‚¬μš©μž μΉœν™”μ μœΌλ‘œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

URL 링크의 일괄적인 변경을 μœ„ν•΄ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜λŠ” 예제λ₯Ό 톡해 μ‹€λ¬΄μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ–΄λ–»κ²Œ ν™œμš©ν•  수 μžˆλŠ”μ§€ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 방법을 톡해 μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ URL을 μΌκ΄„μ μœΌλ‘œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ‹μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 각 μ–Έμ–΄μ˜ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

5. μ†Œμ£Όμ œ: 예제λ₯Ό 톡해 μ‹€μš©μ μΈ ν™œμš©λ²•κ³Ό μ£Όμ˜μ‚¬ν•­μ„ μ„€λͺ…ν•œλ‹€.

μ‹€μ œ μ‹€λ¬΄μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ€ 맀우 μœ μš©ν•œ μž‘μ—…μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 ν…μŠ€νŠΈ 데이터λ₯Ό λ³€ν™˜ν•˜κ±°λ‚˜ μ •μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ 예제λ₯Ό 톡해 μ‹€μš©μ μΈ ν™œμš©λ²•κ³Ό μ£Όμ˜μ‚¬ν•­μ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

예제: 이메일 μ£Όμ†Œμ˜ μˆ¨κΉ€ 처리

이메일 μ£Όμ†Œμ˜ μˆ¨κΉ€ μ²˜λ¦¬λŠ” 개인 정보 보호λ₯Ό μœ„ν•΄ ν•„μš”ν•œ μž‘μ—…μž…λ‹ˆλ‹€. μ•„λž˜ 예제λ₯Ό 톡해 λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μ‚¬μš©ν•˜μ—¬ 이메일 μ£Όμ†Œλ₯Ό μˆ¨κΉ€ μ²˜λ¦¬ν•˜λŠ” 방법을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

import re

text = "Contact us at info@example.com or support@example.com for more information."
hidden_text = re.sub(r'\b([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b)', r'[Email]', text)
print(hidden_text)

μœ„μ˜ μ˜ˆμ œμ—μ„œ λ‹€μŒκ³Ό 같은 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€:

  1. re λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•˜μ—¬ μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•  수 있게 ν•©λ‹ˆλ‹€.

  2. 원본 ν…μŠ€νŠΈλŠ” text λ³€μˆ˜μ— μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 ν…μŠ€νŠΈμ—λŠ” 두 개의 이메일 μ£Όμ†Œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  3. re.sub() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 이메일 μ£Όμ†Œ νŒ¨ν„΄μ„ μ°ΎμŠ΅λ‹ˆλ‹€. 이 νŒ¨ν„΄μ€ μ΄λ©”μΌν˜•μ‹@도메인.도메인확μž₯자의 ν˜•μ‹μ„ λ”°λ¦…λ‹ˆλ‹€.

  4. 찾은 이메일 μ£Όμ†Œλ₯Ό [Email]둜 μΉ˜ν™˜ν•©λ‹ˆλ‹€. 이 μž‘μ—…μ€ re.sub() ν•¨μˆ˜μ˜ 두 번째 인자둜 주어진 μΉ˜ν™˜ λ¬Έμžμ—΄μΈ [Email]둜 μ μš©λ©λ‹ˆλ‹€. λ”°λΌμ„œ info@example.comκ³Ό support@example.com은 λͺ¨λ‘ [Email]둜 λŒ€μ²΄λ©λ‹ˆλ‹€.

  5. λ§ˆμ§€λ§‰μœΌλ‘œ, μˆ¨κΉ€ 처리된 ν…μŠ€νŠΈλ₯Ό hidden_text λ³€μˆ˜μ— μ €μž₯ν•˜κ³  좜λ ₯ν•˜μ—¬ κ²°κ³Όλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” 이메일 μ£Όμ†Œλ₯Ό [Email]둜 μˆ¨κΉ€ μ²˜λ¦¬ν•¨μœΌλ‘œμ¨ 개인 정보λ₯Ό λ³΄ν˜Έν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. 이와 같이 λ¬Έμžμ—΄ μΉ˜ν™˜μ€ λ°μ΄ν„°μ˜ λ³΄μ•ˆ 및 개인 정보 보호 μΈ‘λ©΄μ—μ„œ μ‹€μš©μ μœΌλ‘œ ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

μ£Όμ˜μ‚¬ν•­

λ¬Έμžμ—΄ μΉ˜ν™˜μ„ ν™œμš©ν•  λ•Œ λͺ‡ 가지 μ£Όμ˜μ‚¬ν•­μ„ 염두에 두어야 ν•©λ‹ˆλ‹€:

  1. μ •ν™•ν•œ νŒ¨ν„΄ 맀칭: λ¬Έμžμ—΄ μΉ˜ν™˜μ„ μˆ˜ν–‰ν•˜λŠ” μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μ„ λ§Œλ“€ λ•Œ, μ›ν•˜λŠ” νŒ¨ν„΄μ΄ μ •ν™•ν•˜κ²Œ λ§€μΉ­λ˜λ„λ‘ 섀계해야 ν•©λ‹ˆλ‹€. νŒ¨ν„΄μ— 였λ₯˜κ°€ μžˆλ‹€λ©΄ μ›ν•˜λŠ” κ²°κ³Όλ₯Ό 얻지 λͺ»ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  2. μΉ˜ν™˜ λ¬Έμžμ—΄μ˜ μ‘°μž‘: μΉ˜ν™˜ λ¬Έμžμ—΄μ€ μ •ν™•νžˆ μ›ν•˜λŠ” ν˜•μ‹μœΌλ‘œ κ΅¬μ„±λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, HTML νƒœκ·Έλ₯Ό μ΄μš©ν•œ 링크 ν˜•μ‹μ„ μƒμ„±ν•œλ‹€λ©΄ νƒœκ·Έμ˜ ꡬ쑰와 속성이 μ˜¬λ°”λ¦„μ— μœ μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  3. 쀑볡 μΉ˜ν™˜: μΉ˜ν™˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ, 이전 μž‘μ—…μ—μ„œ 이미 λ³€κ²½λœ ν…μŠ€νŠΈμ— λŒ€ν•΄ μƒˆλ‘œμš΄ μΉ˜ν™˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μˆœμ„œλ₯Ό μ‘°μ •ν•˜κ±°λ‚˜ 쀑볡 μΉ˜ν™˜ μž‘μ—…μ„ μ œμ–΄ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  4. μ„±λŠ₯ κ³ λ €: λŒ€κ·œλͺ¨ ν…μŠ€νŠΈ 데이터λ₯Ό λ‹€λ£° λ•Œ λ¬Έμžμ—΄ μΉ˜ν™˜μ€ μ„±λŠ₯에 영ν–₯을 쀄 수 μžˆμŠ΅λ‹ˆλ‹€. μΉ˜ν™˜ μž‘μ—…μ΄ λ§Žμ€ 경우, μ„±λŠ₯ κ°œμ„ μ„ μœ„ν•΄ λ‹€λ₯Έ 방법을 κ³ λ €ν•΄μ•Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μ œ μ‹€λ¬΄μ—μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜μ€ λ§Žμ€ μž‘μ—…μ— ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ£Όμ˜μ‚¬ν•­μ„ 염두에 두어야 ν•˜λ©°, μ‹€μ œ 상황에 맞게 μ μ ˆν•œ νŒ¨ν„΄κ³Ό μΉ˜ν™˜ λ¬Έμžμ—΄μ„ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν…μŠ€νŠΈ 데이터λ₯Ό μ›ν•˜λŠ” ν˜•νƒœλ‘œ λ³€ν™˜ν•˜κ±°λ‚˜ μˆ˜μ •ν•¨μœΌλ‘œμ¨ 데이터 μ •μ œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€