AJAX

HTML

  1. Markup language for structuring content on the Web

  2. Static display of content in a page layout

  3. Inability to create more dynamic displays of information

  4. Once an HTML document is downloaded, the visual appearance will not change.

    ***Three elements to provide content dynamically

    1. a mechanism to register user behavior in the browser

    2. a scripting engine to formulate responses to those events

    3. a more versatile data requesting mechanism for fetching information asynchronously

AJAX (Asynchronous JavaScript and XML): A Web technology turning static into dynamic HTML

GET function from httr package does not work well with AJAX-enriched websites in data collection, where information is loaded iteratively after the site has been requested.

  1. JavaScript

    • JavaScript functionality enhances HTML using special purpose libraries like R’s packaging system.

    • JavaScript code is organized with HTML elements in various ways, but a JavaScript-enhanced HTML file requires the browser to not only parse the HTML content and construct the DOM, but also to read the JavaScript code and carry out its commands.

    • A popular application for JavaScript is to create some kind of alteration of the information or apperance of the current browser display: DOM manipulation for generating dynamic browser display.

      - HTML elements may either be removed, added or shifted
      - Attributes to any HTML element can be added or changed
      - CSS styles can be modified
library(RCurl)
fortune1 <- getURL("http://www.r-datacollection.com/materials/ch-6-ajax/fortunes/fortunes1.html")

library(XML)
parsed_fortune1 <- htmlParse(fortune1, encoding = "UTF-8")
parsed_fortune1
## <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
## <html>
## <head>
## <script type="text/javascript" src="jquery-1.8.0.min.js"></script><script type="text/javascript" src="script1.js"></script><title>Collected R wisdoms</title>
## </head>
## <body>
## <div id="R Inventor" lang="english" date="June/2003">
##   <h1>Robert Gentleman</h1>
##   <p><i>'What we have is nice, but we need something very different'</i></p>
##   <p><b>Source: </b>Statistical Computing 2003, Reisensburg</p>
## </div>
## 
## <div lang="english" date="October/2011">
##   <h1>Rolf Turner</h1>
##   <p><i>'R is wonderful, but it cannot work magic'</i> <br><emph>answering a request for automatic generation of 'data from a known mean and 95% CI'</emph></p>
##   <p><b>Source: </b><a href="https://stat.ethz.ch/mailman/listinfo/r-help">R-help</a></p>
## </div>
## 
## <address><a href="http://www.r-datacollection.com"><i>The book homepage</i></a></address>
## </body>
## </html>
## 

<script type="text/javascript" src="script1.js"></script> makes a reference to the file script1.js, which includes the code responsible for the DOM alterations.

This illustrates that the underlying HTML code and the information displayed in the browser do not necessarily coincide in a JavaScript-enriched website.

What are the implications of this technology for scraping information from this page?

  1. XMLHttpRequest (XHR)

A limitation of the HTTP protocol is that communication b/w client and server necessarily follows a synchronous request-response pattern. Synchronous communication means that the user’s interaction with the browser is being disabled while a request is received, processed, and a new page is delivered by the web server.

XMLHttpRequest(XHR): An interface initiates HTTP or HTTPS requests to a web server in an asynchronous manner. This allows for a continuous exchange of information b/w the browser and the web server to fetch additional information in the background without interfering with the user’s behavior on the page.

The user-server communication process using the XMLHttpRequest

The user-server communication process using the XMLHttpRequest

fortune2 <- getURL("http://www.r-datacollection.com/materials/ch-6-ajax/fortunes/fortunes2.html")

parsed_fortune2 <- htmlParse(fortune2, encoding = "UTF-8")
parsed_fortune2
## <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
## <html>
## <head>
## <script type="text/javascript" src="jquery-1.8.0.min.js"></script><script type="text/javascript" src="script2.js"></script><title>Collected R wisdoms</title>
## </head>
## <body>
## 
## <address><a href="http://www.r-datacollection.com"><i>The book homepage</i></a></address>
## </body>
## </html>
## 

Exploring AJAX with Web Developer Tools

fortunes_xhr <- getURL("http://www.r-datacollection.com/materials/ch-6-ajax/fortunes/quotes/quotes.html")

htmlParse(fortunes_xhr)
## <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
## <html><body>
## <div id="R Inventor" lang="english" date="June/2003">
##   <h1>Robert Gentleman</h1>
##   <p><i>'What we have is nice, but we need something very different'</i></p>
##   <p><b>Source: </b>Statistical Computing 2003, Reisensburg</p>
## </div>
## 
## <div lang="english" date="October/2011">
##   <h1>Rolf Turner</h1>
##   <p><i>'R is wonderful, but it cannot work magic'</i> <br><emph>answering a request for automatic generation of 'data from a known mean and 95% CI'</emph></p>
##   <p><b>Source: </b><a href="https://stat.ethz.ch/mailman/listinfo/r-help">R-help</a></p>
## </div>
## </body></html>
## 

Regular expressions (Regex)

library(XML)

news <- readLines("https://news.naver.com/main/ranking/read.nhn?mid=etc&sid1=111&rankingType=popular_day&oid=018&aid=0004756242&date=20201011&type=1&rankingSeq=2&rankingSectionId=105")
## Warning in readLines("https://news.naver.com/main/ranking/read.nhn?
## mid=etc&sid1=111&rankingType=popular_day&oid=018&aid=0004756242&date=20201011&type=1&rankingSeq=2&rankingSectionId=105"):
## 'https://news.naver.com/main/ranking/read.nhn?
## mid=etc&sid1=111&rankingType=popular_day&oid=018&aid=0004756242&date=20201011&type=1&rankingSeq=2&rankingSectionId=105'에
## μ„œ λΆˆμ™„μ „ν•œ λ§ˆμ§€λ§‰ 행이 λ°œκ²¬λ˜μ—ˆμŠ΅λ‹ˆλ‹€
parsed_news <- htmlParse(news)


library(tidyverse)
## -- Attaching packages ---------------------------------------- tidyverse 1.3.0 --
## √ ggplot2 3.3.0     √ purrr   0.3.4
## √ tibble  3.0.0     √ dplyr   1.0.1
## √ tidyr   1.0.2     √ stringr 1.4.0
## √ readr   1.3.1     √ forcats 0.5.0
## -- Conflicts ------------------------------------------- tidyverse_conflicts() --
## x tidyr::complete() masks RCurl::complete()
## x dplyr::filter()   masks stats::filter()
## x dplyr::lag()      masks stats::lag()
library(rvest)
## Loading required package: xml2
## 
## Attaching package: 'rvest'
## The following object is masked from 'package:purrr':
## 
##     pluck
## The following object is masked from 'package:readr':
## 
##     guess_encoding
## The following object is masked from 'package:XML':
## 
##     xml
time <- xpathSApply(parsed_news, '//*[@id="main_content"]/div[1]/div[3]/div/span', xmlValue) %>% repair_encoding(from="utf-8")
time
## [1] "2020.10.11. μ˜€μ „ 9:29"
class(time)
## [1] "character"
library(stringr)
str_extract(time, " [κ°€-힣]+ [^[:alpha:]]+:[^[:alpha:]]+$")
## [1] " μ˜€μ „ 9:29"
str_extract(time, " [κ°€-힣]+ [[:digit:]]+:[[:digit:]]+$")
## [1] " μ˜€μ „ 9:29"
str_replace_all(time, " [κ°€-힣]+ [[:digit:]]+:[[:digit:]]+$", "")
## [1] "2020.10.11."
time <- str_remove_all(time, " [κ°€-힣]+ [[:digit:]]+:[[:digit:]]+$")
class(time)
## [1] "character"
one <- "2020.10.11"
two <- "2020.10.10"

time <- as.Date(time, "%Y.%m.%d")
time
## [1] "2020-10-11"
class(time)
## [1] "Date"
content <- repair_encoding(xpathSApply(parsed_news, '//*[@id="articleBodyContents"]/text()', fun=xmlValue), from="UTF-8")
content
##  [1] "\n\t"                                                                                                                                                                                                                                                                                                                                                                         
##  [2] "\n\t"                                                                                                                                                                                                                                                                                                                                                                         
##  [3] "\n\n"                                                                                                                                                                                                                                                                                                                                                                         
##  [4] "\n"                                                                                                                                                                                                                                                                                                                                                                           
##  [5] "[이데일리 μž₯μ˜μ€ 기자] β€˜μ•„μ΄ν°12’(κ°€μΉ­) μ΄λ²ˆμ£Όμ— λ“œλ””μ–΄ 베일을 λ²—λŠ”λ‹€. μ˜ˆλ…„λ³΄λ‹€ 아이폰 μ‹ μž‘μ˜ 곡개 및 μΆœμ‹œ 일정이 ν•œλ‹¬ κ°€λŸ‰ λŠ¦μ–΄μ§€λ©΄μ„œ β€˜μ• ν”Œ νŒ¬β€™λ“€μ˜ κΈ°λŒ€κ°μ€ 더 λ†’μ•„μ Έ μžˆλŠ” μƒνƒœλ‹€. "                                                                                                                                                                                    
##  [6] "아이폰 12 μ‹œλ¦¬μ¦ˆλŠ” △아이폰12 λ―Έλ‹ˆ(5.4인치) △아이폰12(6.1인치) △아이폰12 ν”„λ‘œ(6.1인치) △아이폰12 ν”„λ‘œ λ§₯슀(6.7인치) λ“± 4μ’…μœΌλ‘œ μΆœμ‹œλ  μ˜ˆμ •μ΄λ‹€. μ—­λŒ€ 라인업 쀑 κ°€μž₯ λ§Žμ€ λͺ¨λΈλ‘œ κ΅¬μ„±λœλ‹€. "                                                                                                                                                                                
##  [7] "μš°μ„  κ°€μž₯ 크게 μ£Όλͺ©μ„ λ°›κ³  μžˆλŠ” 뢀뢄은 μ• ν”Œμ˜ 첫번째 5Gν°μ΄λΌλŠ” 점이닀. μ‚Όμ„±μ „μž(005930)κ°€ 세계 졜초 5G폰인 β€˜κ°€λŸ­μ‹œS10’을 μΆœμ‹œν•œμ§€ 1λ…„ 7κ°œμ›”λ§Œμ΄λ‹€. κ·Έλ™μ•ˆ μ—…κ³„μ—μ„œλŠ” β€˜μ™„λ²½ν•˜μ§€ μ•ŠμœΌλ©΄ λ‚΄μ§€ μ•ŠλŠ”λ‹€β€™λŠ” μ• ν”Œμ˜ μ² ν•™ λ•Œλ¬Έμ— 5G폰 μΆœμ‹œκ°€ λŠ¦μ–΄μ§€λŠ” κ²ƒμ΄λΌλŠ” 해석도 λ‚˜μ™”λ‹€. "                                                                                                   
##  [8] "ꡭ내에 μΆœμ‹œλ˜λŠ” 아이폰12 μ‹œλ¦¬μ¦ˆλŠ” 4μ’… λͺ¨λ‘ 6κΈ°κ°€ν—€λ₯΄μΈ (GHz) λŒ€μ—­ μ΄ν•˜(μ„œλΈŒ6) 5G λͺ¨λΈλ‘œ μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. λ‹€λ§Œ, μ΅œμƒμœ„ λͺ¨λΈμΈ β€˜μ•„μ΄ν°12 ν”„λ‘œ λ§₯μŠ€β€™μ˜ λ―Έκ΅­ μΆœμ‹œ λͺ¨λΈμ—λŠ” 28Ghz의 초고주파(mmWave) λŒ€μ—­ μ•ˆν…Œλ‚˜κ°€ νƒ‘μž¬λ  κ²ƒμ΄λž€ 전망이 λ‚˜μ˜¨λ‹€. 배터리 절감 μ°¨μ›μ—μ„œ 4G와 5Gλ₯Ό 선택할 수 μžˆλŠ” 슀마트 데이터λͺ¨λ“œκ°€ λ„μž…λœλ‹€. "                                              
##  [9] "μ• ν”Œμ˜ μ΅œμ‹ ν˜• μΉ©μ…‹ β€˜A14 λ°”μ΄μ˜€λ‹‰β€™μ΄ 보여쀄 κ°•λ ₯ν•œ μ„±λŠ₯에도 이λͺ©μ΄ 쏠린닀. μ• ν”Œμ€ 자체 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œμ„Έμ„œ(AP)의 μ„±λŠ₯이 동급 μ΅œκ°•μ΄λΌλŠ” μžλΆ€ν•˜κ³  μžˆλ‹€.  μ• ν”Œ 졜초둜 β€˜5λ‚˜λ…Έλ―Έν„°β€™ 곡정 기술이 적용된 A14λŠ” A13보닀 μ€‘μ•™μ²˜λ¦¬μž₯치(CPU)와 κ·Έλž˜ν”½μ²˜λ¦¬μž₯치(GPU)의 속도λ₯Ό 각각 16%, 8.3% ν–₯μƒμ‹œν‚¬ κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜κ³  μžˆλ‹€. A12와 λΉ„κ΅ν•˜λ©΄ CPU μ†λ„λŠ” 40%, GPUλŠ” 30% 각각 ν–₯μƒλœλ‹€. "
## [10] "λ””μžμΈ μΈ‘λ©΄μ—μ„œλŠ” 과거둜 νšŒκ·€ν•  κ²ƒμ΄λΌλŠ” 전망이닀. 기기의 κ°€μž₯μžλ¦¬μ— β€˜κΉ»μžŽ ν†΅μ‘°λ¦Όβ€™μ΄λΌλŠ” 별칭을 μ–»μ—ˆλ˜ β€˜μ•„μ΄ν°4’와 β€˜μ•„μ΄ν°5’ 처럼 ν‰ν‰ν•œ κΈˆμ† ν…Œλ‘λ¦¬λ₯Ό μ μš©ν•  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. μ „μž‘μ˜ 인기 μƒ‰μƒμ΄μ—ˆλ˜ β€˜λ―Έλ“œλ‚˜μž‡ 그린’을 λŒ€μ²΄ν•  μƒ‰μƒμœΌλ‘œ 닀크 블루 색상을 μ±„νƒν•˜κ³  앑정을 λ³΄ν˜Έν•˜κΈ° μœ„ν•œ β€˜μ„ΈλΌλ―Ή μ‰΄λ“œβ€™ 코딩도 μƒˆλ‘­κ²Œ μ μš©λœλ‹€. "                                      
## [11] "이밖에도 아이폰12μ—μ„œλŠ” 좩전방식이 λΌμ΄νŠΈλ‹μ—μ„œ USB-C νƒ€μž…μœΌλ‘œ λ°”λ€Œκ³ , μ›κ°€μ ˆκ°κ³Ό ν™˜κ²½ 보호λ₯Ό μœ„ν•΄ κΈ°λ³Έ κ΅¬μ„±ν’ˆμœΌλ‘œ 제곡되던 μœ μ„ μ΄μ–΄ν°(μ΄μ–΄νŒŸ)κ³Ό μΆ©μ „κΈ°κ°€ λΉ μ§„λ‹€. "                                                                                                                                                                                                           
## [12] "아이폰12λŠ” 미ꡭ을 ν¬ν•¨ν•œ 1μ°¨ μΆœμ‹œκ΅­μ— 이λ₯΄λ©΄ 23일께 곡식 μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ˜ˆμƒλœλ‹€. 아이폰12 ν”„λ‘œ λ§₯μŠ€λŠ” λΆ€ν’ˆ μˆ˜κΈ‰ λ“± 문제둜 11월에 λ”°λ‘œ μΆœμ‹œλ  κ°€λŠ₯성도 μžˆλ‹€."                                                                                                                                                                                                                  
## [13] "특히 μ˜¬ν•΄λŠ” 아이폰 μ‹ μž‘μ˜ κ΅­λ‚΄ μΆœμ‹œ 일정이 획기적으둜 μ•žλ‹Ήκ²¨μ§ˆ κ²ƒμ΄λΌλŠ” μ†Œμ‹μ΄λ‹€. 첫 5G폰인 만큼 세계 졜초둜 5G μ„œλΉ„μŠ€λ₯Ό μƒμš©ν™”ν•œ ꡭ내에 1μ°¨ μΆœμ‹œκ΅­μ— μ€€ν•˜λŠ” μΌμ •μœΌλ‘œ 이달 말께 μ„ λ³΄μΈλ‹€λŠ” 것이닀. "                                                                                                                                                                          
## [14] "가격은 κ°€μž₯ μ €λ ΄ν•œ β€˜μ•„μ΄ν°12 λ―Έλ‹ˆβ€™ κΈ°μ€€μœΌλ‘œ 649λ‹¬λŸ¬λΆ€ν„° 749λ‹¬λŸ¬κΉŒμ§€ λ‹€μ–‘ν•œ 관츑이 λ‚˜μ˜€κ³  μžˆλŠ” 상황이닀. "                                                                                                                                                                                                                                                                   
## [15] "μ—…κ³„μ—μ„œλŠ” 아이폰12이 아이폰 μ‚¬μš©μžλ“€μ˜ ꡐ체 μˆ˜μš”λ₯Ό μžκ·Ήν•΄ μ˜ˆλ…„λ³΄λ‹€ 많이 판맀될 κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜κ³  μžˆλ‹€. μ „ μ„Έκ³„μ—μ„œ μ‚¬μš©λ˜λŠ” 아이폰 μ•½ 9μ–΅5000λ§ŒλŒ€ 쀑 3μ–΅5000λ§ŒλŒ€κ°€ 1λ…„ μ•ˆμ— ꡐ체될 κ°€λŠ₯성이 높은 κ΅¬ν˜• μ œν’ˆμΈλ°λ‹€, μ• ν”Œμ˜ 첫 5G폰이기 λ•Œλ¬Έμ΄λ‹€. "                                                                                                                               
## [16] "또 λ―Έκ΅­ 쀑고 νœ΄λŒ€ν° 셀셀닷컴이 λ―Έκ΅­ μ•ˆλ“œλ‘œμ΄λ“œ 슀마트폰 μ‚¬μš©μž 2000λͺ…을 λŒ€μƒμœΌλ‘œ μ‹€μ‹œν•œ 섀문쑰사에 λ”°λ₯΄λ©΄ μ‘λ‹΅μžμ˜ 33%κ°€ 아이폰12둜 ꡐ체λ₯Ό ν¬λ§ν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬λ‹€. "                                                                                                                                                                                                        
## [17] "ν•œνŽΈ, μ• ν”Œμ€ μ˜€λŠ” 13일(ν˜„μ§€μ‹œκ°„) λ―Έκ΅­ μƒŒν”„λž€μ‹œμŠ€μ½” λ³Έμ‚¬μ—μ„œ 온라인으둜 아이폰12 곡개 행사λ₯Ό μ§„ν–‰ν•  κ³„νšμ΄λ‹€. ν–‰μ‚¬λŠ” μ• ν”Œ ν™ˆνŽ˜μ΄μ§€λ₯Ό 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ‹œμ²­ν•  수 μžˆλ‹€."                                                                                                                                                                                                          
## [18] "μž₯μ˜μ€ (bluerain@edaily.co.kr)"                                                                                                                                                                                                                                                                                                                                               
## [19] "\n\t"                                                                                                                                                                                                                                                                                                                                                                         
## [20] "\n\t"
content <- paste(content, collapse = " ")
content
## [1] "\n\t \n\t \n\n \n [이데일리 μž₯μ˜μ€ 기자] β€˜μ•„μ΄ν°12’(κ°€μΉ­) μ΄λ²ˆμ£Όμ— λ“œλ””μ–΄ 베일을 λ²—λŠ”λ‹€. μ˜ˆλ…„λ³΄λ‹€ 아이폰 μ‹ μž‘μ˜ 곡개 및 μΆœμ‹œ 일정이 ν•œλ‹¬ κ°€λŸ‰ λŠ¦μ–΄μ§€λ©΄μ„œ β€˜μ• ν”Œ νŒ¬β€™λ“€μ˜ κΈ°λŒ€κ°μ€ 더 λ†’μ•„μ Έ μžˆλŠ” μƒνƒœλ‹€.  아이폰 12 μ‹œλ¦¬μ¦ˆλŠ” △아이폰12 λ―Έλ‹ˆ(5.4인치) △아이폰12(6.1인치) △아이폰12 ν”„λ‘œ(6.1인치) △아이폰12 ν”„λ‘œ λ§₯슀(6.7인치) λ“± 4μ’…μœΌλ‘œ μΆœμ‹œλ  μ˜ˆμ •μ΄λ‹€. μ—­λŒ€ 라인업 쀑 κ°€μž₯ λ§Žμ€ λͺ¨λΈλ‘œ κ΅¬μ„±λœλ‹€.  μš°μ„  κ°€μž₯ 크게 μ£Όλͺ©μ„ λ°›κ³  μžˆλŠ” 뢀뢄은 μ• ν”Œμ˜ 첫번째 5Gν°μ΄λΌλŠ” 점이닀. μ‚Όμ„±μ „μž(005930)κ°€ 세계 졜초 5G폰인 β€˜κ°€λŸ­μ‹œS10’을 μΆœμ‹œν•œμ§€ 1λ…„ 7κ°œμ›”λ§Œμ΄λ‹€. κ·Έλ™μ•ˆ μ—…κ³„μ—μ„œλŠ” β€˜μ™„λ²½ν•˜μ§€ μ•ŠμœΌλ©΄ λ‚΄μ§€ μ•ŠλŠ”λ‹€β€™λŠ” μ• ν”Œμ˜ μ² ν•™ λ•Œλ¬Έμ— 5G폰 μΆœμ‹œκ°€ λŠ¦μ–΄μ§€λŠ” κ²ƒμ΄λΌλŠ” 해석도 λ‚˜μ™”λ‹€.  ꡭ내에 μΆœμ‹œλ˜λŠ” 아이폰12 μ‹œλ¦¬μ¦ˆλŠ” 4μ’… λͺ¨λ‘ 6κΈ°κ°€ν—€λ₯΄μΈ (GHz) λŒ€μ—­ μ΄ν•˜(μ„œλΈŒ6) 5G λͺ¨λΈλ‘œ μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. λ‹€λ§Œ, μ΅œμƒμœ„ λͺ¨λΈμΈ β€˜μ•„μ΄ν°12 ν”„λ‘œ λ§₯μŠ€β€™μ˜ λ―Έκ΅­ μΆœμ‹œ λͺ¨λΈμ—λŠ” 28Ghz의 초고주파(mmWave) λŒ€μ—­ μ•ˆν…Œλ‚˜κ°€ νƒ‘μž¬λ  κ²ƒμ΄λž€ 전망이 λ‚˜μ˜¨λ‹€. 배터리 절감 μ°¨μ›μ—μ„œ 4G와 5Gλ₯Ό 선택할 수 μžˆλŠ” 슀마트 데이터λͺ¨λ“œκ°€ λ„μž…λœλ‹€.  μ• ν”Œμ˜ μ΅œμ‹ ν˜• μΉ©μ…‹ β€˜A14 λ°”μ΄μ˜€λ‹‰β€™μ΄ 보여쀄 κ°•λ ₯ν•œ μ„±λŠ₯에도 이λͺ©μ΄ 쏠린닀. μ• ν”Œμ€ 자체 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œμ„Έμ„œ(AP)의 μ„±λŠ₯이 동급 μ΅œκ°•μ΄λΌλŠ” μžλΆ€ν•˜κ³  μžˆλ‹€.  μ• ν”Œ 졜초둜 β€˜5λ‚˜λ…Έλ―Έν„°β€™ 곡정 기술이 적용된 A14λŠ” A13보닀 μ€‘μ•™μ²˜λ¦¬μž₯치(CPU)와 κ·Έλž˜ν”½μ²˜λ¦¬μž₯치(GPU)의 속도λ₯Ό 각각 16%, 8.3% ν–₯μƒμ‹œν‚¬ κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜κ³  μžˆλ‹€. A12와 λΉ„κ΅ν•˜λ©΄ CPU μ†λ„λŠ” 40%, GPUλŠ” 30% 각각 ν–₯μƒλœλ‹€.  λ””μžμΈ μΈ‘λ©΄μ—μ„œλŠ” 과거둜 νšŒκ·€ν•  κ²ƒμ΄λΌλŠ” 전망이닀. 기기의 κ°€μž₯μžλ¦¬μ— β€˜κΉ»μžŽ ν†΅μ‘°λ¦Όβ€™μ΄λΌλŠ” 별칭을 μ–»μ—ˆλ˜ β€˜μ•„μ΄ν°4’와 β€˜μ•„μ΄ν°5’ 처럼 ν‰ν‰ν•œ κΈˆμ† ν…Œλ‘λ¦¬λ₯Ό μ μš©ν•  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. μ „μž‘μ˜ 인기 μƒ‰μƒμ΄μ—ˆλ˜ β€˜λ―Έλ“œλ‚˜μž‡ 그린’을 λŒ€μ²΄ν•  μƒ‰μƒμœΌλ‘œ 닀크 블루 색상을 μ±„νƒν•˜κ³  앑정을 λ³΄ν˜Έν•˜κΈ° μœ„ν•œ β€˜μ„ΈλΌλ―Ή μ‰΄λ“œβ€™ 코딩도 μƒˆλ‘­κ²Œ μ μš©λœλ‹€.  이밖에도 아이폰12μ—μ„œλŠ” 좩전방식이 λΌμ΄νŠΈλ‹μ—μ„œ USB-C νƒ€μž…μœΌλ‘œ λ°”λ€Œκ³ , μ›κ°€μ ˆκ°κ³Ό ν™˜κ²½ 보호λ₯Ό μœ„ν•΄ κΈ°λ³Έ κ΅¬μ„±ν’ˆμœΌλ‘œ 제곡되던 μœ μ„ μ΄μ–΄ν°(μ΄μ–΄νŒŸ)κ³Ό μΆ©μ „κΈ°κ°€ λΉ μ§„λ‹€.  아이폰12λŠ” 미ꡭ을 ν¬ν•¨ν•œ 1μ°¨ μΆœμ‹œκ΅­μ— 이λ₯΄λ©΄ 23일께 곡식 μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ˜ˆμƒλœλ‹€. 아이폰12 ν”„λ‘œ λ§₯μŠ€λŠ” λΆ€ν’ˆ μˆ˜κΈ‰ λ“± 문제둜 11월에 λ”°λ‘œ μΆœμ‹œλ  κ°€λŠ₯성도 μžˆλ‹€. 특히 μ˜¬ν•΄λŠ” 아이폰 μ‹ μž‘μ˜ κ΅­λ‚΄ μΆœμ‹œ 일정이 획기적으둜 μ•žλ‹Ήκ²¨μ§ˆ κ²ƒμ΄λΌλŠ” μ†Œμ‹μ΄λ‹€. 첫 5G폰인 만큼 세계 졜초둜 5G μ„œλΉ„μŠ€λ₯Ό μƒμš©ν™”ν•œ ꡭ내에 1μ°¨ μΆœμ‹œκ΅­μ— μ€€ν•˜λŠ” μΌμ •μœΌλ‘œ 이달 말께 μ„ λ³΄μΈλ‹€λŠ” 것이닀.  가격은 κ°€μž₯ μ €λ ΄ν•œ β€˜μ•„μ΄ν°12 λ―Έλ‹ˆβ€™ κΈ°μ€€μœΌλ‘œ 649λ‹¬λŸ¬λΆ€ν„° 749λ‹¬λŸ¬κΉŒμ§€ λ‹€μ–‘ν•œ 관츑이 λ‚˜μ˜€κ³  μžˆλŠ” 상황이닀.  μ—…κ³„μ—μ„œλŠ” 아이폰12이 아이폰 μ‚¬μš©μžλ“€μ˜ ꡐ체 μˆ˜μš”λ₯Ό μžκ·Ήν•΄ μ˜ˆλ…„λ³΄λ‹€ 많이 판맀될 κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜κ³  μžˆλ‹€. μ „ μ„Έκ³„μ—μ„œ μ‚¬μš©λ˜λŠ” 아이폰 μ•½ 9μ–΅5000λ§ŒλŒ€ 쀑 3μ–΅5000λ§ŒλŒ€κ°€ 1λ…„ μ•ˆμ— ꡐ체될 κ°€λŠ₯성이 높은 κ΅¬ν˜• μ œν’ˆμΈλ°λ‹€, μ• ν”Œμ˜ 첫 5G폰이기 λ•Œλ¬Έμ΄λ‹€.  또 λ―Έκ΅­ 쀑고 νœ΄λŒ€ν° 셀셀닷컴이 λ―Έκ΅­ μ•ˆλ“œλ‘œμ΄λ“œ 슀마트폰 μ‚¬μš©μž 2000λͺ…을 λŒ€μƒμœΌλ‘œ μ‹€μ‹œν•œ 섀문쑰사에 λ”°λ₯΄λ©΄ μ‘λ‹΅μžμ˜ 33%κ°€ 아이폰12둜 ꡐ체λ₯Ό ν¬λ§ν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬λ‹€.  ν•œνŽΈ, μ• ν”Œμ€ μ˜€λŠ” 13일(ν˜„μ§€μ‹œκ°„) λ―Έκ΅­ μƒŒν”„λž€μ‹œμŠ€μ½” λ³Έμ‚¬μ—μ„œ 온라인으둜 아이폰12 곡개 행사λ₯Ό μ§„ν–‰ν•  κ³„νšμ΄λ‹€. ν–‰μ‚¬λŠ” μ• ν”Œ ν™ˆνŽ˜μ΄μ§€λ₯Ό 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ‹œμ²­ν•  수 μžˆλ‹€. μž₯μ˜μ€ (bluerain@edaily.co.kr) \n\t \n\t"

μ •κ·œ ν‘œν˜„μ‹

Rμ—μ„œ ν…μŠ€νŠΈλ₯Ό 닀루고 μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ λͺ‡κ°€μ§€ κΈ°λ³Έ κΈ°λŠ₯을 ν•™μŠ΅ν•˜λŠ” κ³Όμ •μ—μ„œ μš°λ¦¬λŠ” λ¬Έμžμ—΄μ„ 자유둭게 λ‹€λ£° 수 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” ν•„μš”μ„±μ„ κ°€μ§‘λ‹ˆλ‹€. κ·Έλž˜μ„œ μš°λ¦¬λŠ” μ •κ·œ ν‘œν˜„μ‹(regular expressions)에 λŒ€ν•΄ μ•Œμ•„λ³Ό κ²ƒμž…λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹μ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?

μ •κ·œ ν‘œν˜„μ‹μ΄λΌλŠ” μš©μ–΄λŠ” λ‚―μ„€κ²Œ λŠκ»΄μ§€κ³  κ·Έ μ˜ˆλŠ” λ³΅μž‘ν•˜κ²Œ 보일 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ •κ·œ ν‘œν˜„μ‹μ€ ν…μŠ€νŠΈλ₯Ό κ΅¬μ„±ν•˜λŠ” 방식에 κ΄€ν•œ κ²ƒμž…λ‹ˆλ‹€. μ˜€λŠ˜λ‚  μš°λ¦¬λŠ” 이메일, 문자 λ©”μ„Έμ§€, λ‰΄μŠ€ 기사, λΈ”λ‘œκ·Έ, λŒ“κΈ€, νŠΈμœ—κ³Ό 같은 λ‹€μ–‘ν•œ λ””μ§€ν„Έ ν…μŠ€νŠΈλ₯Ό μ‰½κ²Œ μ ‘ν•  수 있죠. μ΄λŸ¬ν•œ 데이터듀은 λͺ¨λ‘ λ””μ§€ν„Έ 기호둜 이뀄져 있기 λ•Œλ¬Έμ—, μš°λ¦¬κ°€ ν…μŠ€νŠΈλ₯Ό κ΅¬μ„±ν•˜λŠ” 방식을 μ•ˆλ‹€λ©΄ λ§Žμ€ μ–‘μ˜ 데이터λ₯Ό 즉 빅데이터λ₯Ό λ‹€λ£° 수 μžˆλŠ” νž˜μ„ κ°–κ²Œ λ©λ‹ˆλ‹€. λ‹€μ‹œ 말해, μ •κ·œ ν‘œν˜„μ‹μ„ μ΄μš©ν•΄μ„œ λ””μ§€ν„Έ ν…μŠ€νŠΈλ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ” 것이죠.

그럼 μ •κ·œ ν‘œν˜„μ‹μ€ λ¬΄μ—‡μΌκΉŒμš”? regular expression, 즉 μ •κ·œ ν‘œν˜„μ‹μ€ ν…μŠ€νŠΈμ˜ νŠΉμ • pattern을 μ°Ύμ•„λ‚΄κΈ° μœ„ν•œ 특수 λ¬Έμžμ—΄μž…λ‹ˆλ‹€. κ²°κ΅­ μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄ 집합을 λ§€μΉ­ν•˜κΈ° μœ„ν•œ 기호 집합이죠. μ˜μ–΄λ‘œ regular expressionμ΄λΌλŠ” μš©μ–΄ μžμ²΄κ°€ λ‹€μ†Œ κΈΈκΈ° λ•Œλ¬Έμ—, ν”νžˆ regex 라고 짧게 μ€„μ—¬μ„œ μ§€μΉ­ν•©λ‹ˆλ‹€. 저도 이 μˆ˜μ—…μ—μ„œ μ •κ·œ ν‘œν˜„κ³Ό regexλ₯Ό ν˜Όμš©ν•΄μ„œ μ‚¬μš©ν•  κ²ƒμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ, μ •κ·œν‘œν˜„μ‹μ€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” μ•„λ‹ˆλΌλŠ” 점에 μ£Όλͺ©ν•  ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. regexκ°€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ²˜λŸΌ 보일지도 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ μ •κ·œ ν‘œν˜„μ€ 컴퓨터λ₯Ό 톡해 ν…μŠ€νŠΈμ—μ„œ μš°λ¦¬κ°€ μ›ν•˜λŠ” 것을 μ°Ύμ•„λ‚΄λŠ”λ° μ‚¬μš©λœλŠ” κ·œμΉ™μ˜ 집합이기 λ•Œλ¬Έμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ regexλŠ” λ³€μˆ˜λ₯Ό μ§€μ •ν•  수 μ—†κ³ , 2+2와 같은 계산을 μΆ”κ°€ν•  수 μ—†κΈ° λ•Œλ¬Έμ—, ν”„λ‘œκ·Έλž˜λ° 언어라 말할 순 μ—†μŠ΅λ‹ˆλ‹€.

μ •κ·œν‘œν˜„μ‹μ— λ“€μ–΄κ°€κΈ° 전에…

μ •κ·œ ν‘œν˜„μ‹μ€ μ²˜μŒμ—λŠ” μ΄ν•΄ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. λ¬΄μ˜λ―Έν•œ λ°©μ‹μœΌλ‘œ κ²°ν•©λœ 문자, 숫자 및 ꡬ두점이 ν¬ν•¨λœ λ¬Έμžμ—΄μ„ λ³Ό 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. ν”„λ‘œκ·Έλž˜λ° 및 데이터 뢄석과 λ§ˆμ°¬κ°€μ§€λ‘œ, μ •κ·œ ν‘œν˜„μ‹μ„ ν•™μŠ΅ν•˜κ³  μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μ„ μ •μ˜ν•˜λŠ” 데에 μ‹œκ°„μ΄ κ±Έλ¦¬λ―€λ‘œ λ§Žμ€ μ—°μŠ΅μ΄ ν•„μš”ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ—°μŠ΅μ„ λ§Žμ΄ν•˜λ©΄ ν• μˆ˜λ‘ 더 λ³΅μž‘ν•œ νŒ¨ν„΄μ„ μ •μ˜ν•  수 있고 μ œκ±°ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 그리고 μ •κ·œ ν‘œν˜„μ‹μ€ Python, Perl, Java와 같은 λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ λŒ€λΆ€λΆ„μ—μ„œ μ§€μ›λ˜κΈ° λ•Œλ¬Έμ— μ‚¬μš©μ— μ΅μˆ™ν•΄μ§€λ©΄ 맀우 μœ μš©ν•©λ‹ˆλ‹€.

μ •κ·œ ν‘œν˜„μ‹(RegEx)은 어디에 μ‚¬μš©λ κΉŒμš”?

μš°λ¦¬λŠ” μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ ν…μŠ€νŠΈ μž‘μ—…μ„ ν•  κ²ƒμž…λ‹ˆλ‹€. κ°€λ Ή, μ•„κΉŒ μ˜ˆμ‹œμ—μ„œ μ–ΈκΈ‰ν–ˆλ˜, ꡬ두점, 숫자 그리고 μ›ν•˜μ§€ μ•ŠλŠ” 문자 등을 μ°Ύμ•„λ‚΄μ„œ μ§€μš°κ±°λ‚˜ μ›ν•˜λŠ” 문자둜 λ°”κΏ”μ£ΌλŠ” μž‘μ—…μ„ regexλ₯Ό μ΄μš©ν•΄μ„œ ν•  κ²ƒμž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μš°λ¦¬κ°€ μ „μ²˜λ¦¬ν•˜κ³ μž ν•˜λŠ” λ‰΄μŠ€ ν…μŠ€νŠΈμ—μ„œλŠ” byline을 κ΅¬λΆ„ν•΄μ„œ μ²˜λ¦¬ν•΄μ•Ό ν•  ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, ν…μŠ€νŠΈμ— λ“±μž₯ν•˜λŠ” ꡬ두점과 숫자 ν‘œν˜„λ“€, μ˜μ–΄ μ•ŒνŒŒλ²³ 문자 그리고 μ›ΉνŽ˜μ΄μ§€ μ£Όμ†Œ 같은 URLκ³Ό 이메일 μ£Όμ†Œ 등을 일일이 μ§€μ •ν•  ν•„μš” 없이 ν•œλ²ˆμ— 제거(뢄리)ν•  수 μžˆλ‹€λ©΄ 효율적인 ν…μŠ€νŠΈ 뢄석이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

사싀, μ²˜λ¦¬ν•΄μ€˜ μ•Ό ν•  ν…μŠ€νŠΈ νŒ¨ν„΄μ€ 맀우 λ‹€μ–‘ν•  수 있기 λ•Œλ¬Έμ— 일일이 λͺ¨λ“  경우λ₯Ό ν¬ν•¨μ‹œν‚¬ μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. κ°€λ Ή, 연도λ₯Ό κ°€λ¦¬ν‚€λŠ” 숫자만 해도 β€œ2018”, β€œ2016”, β€œ2017”에 κ΅­ν•œλœ 것이 μ•„λ‹ˆλΌ 더 λ§Žμ€ λ‹€μ–‘ν•œ κ²½μš°κ°€ 올 수 있기 λ•Œλ¬Έμ—, μ΄λŸ¬ν•œ κ·œμΉ™μ„ κ°€μ§„ 숫자 ν‘œν˜„ λͺ¨λ‘λ₯Ό λ§€μΉ­ν•΄μ„œ μ²˜λ¦¬ν•΄μ£ΌλŠ” μ •κ·œ ν‘œν˜„μ΄ ν•„μš”ν•©λ‹ˆλ‹€. 이런 λ°©μ‹μœΌλ‘œ ν…μŠ€νŠΈμ— λ“±μž₯ν•˜λŠ” 그리고 μš°λ¦¬κ°€ μ§€μ›Œμ€˜μ•Ό ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄, 숫자 λ˜λŠ” ꡬ두점을 μ°Ύμ•„μ„œ μ²˜λ¦¬ν•  수 있죠.

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

λ‹€μ‹œ ν•œλ²ˆ κ°•μ‘°ν•˜μžλ©΄, μ •κ·œ ν‘œν˜„μ‹μ€ νŠΉμ • ν…μŠ€νŠΈ λ¬Έμžμ—΄μ„ μΌκ΄„μ μœΌλ‘œ μ°Ύμ•„λ‚Ό 수 μžˆλŠ” νŒ¨ν„΄μ„ κ΅¬μ„±ν•˜λŠ” 것이라 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ regexλ₯Ό μ‚¬μš©ν•  경우 μš°λ¦¬κ°€ μ²˜λ¦¬ν•˜κ³ μž ν•˜λŠ” ν…μŠ€νŠΈ νŒ¨ν„΄μ„ λͺ¨λ‘ μ°Ύμ•„λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 stringr νŒ¨ν‚€μ§€μ—μ„œ regex pattern을 잘 κ΅¬μ„±ν•΄μ„œ μ΄μš©ν•˜λŠ” 것은 κ·Έλž˜μ„œ 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.

그러면 μ–΄λ–»κ²Œ regexλ₯Ό ꡬ성해야 ν• κΉŒμš”. μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ“―, νŒ¨ν„΄ 맀칭의 κ°€μž₯ κ°„λ‹¨ν•œ 방법은 νŠΉμ • λ¬Έμžμ—΄ κ·ΈλŒ€λ‘œλ₯Ό 찾도둝 λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, ν…μŠ€νŠΈ λ¬Έμ„œμ—μ„œ λ“±μž₯ν•˜λŠ” νŠΉμ • 단어 λ¬Έμžμ—΄μ„ λ§€μΉ­ν•˜κ³ μž ν•˜λŠ” λ¬ΈμžνŒ¨ν„΄ κ·ΈλŒ€λ‘œμ˜ regexλ₯Ό μ‚¬μš©ν•΄μ„œ κ·Έ μœ„μΉ˜λ₯Ό κ²€μƒ‰ν•˜λŠ” 것이죠.

ν•˜μ§€λ§Œ λŒ€λΆ€λΆ„μ˜ 경우 보닀 λ³΅μž‘ν•œ ꡬ쑰의 μ •κ·œν‘œν˜„μ‹ νŒ¨ν„΄μ„ λ§Œλ“€μ–΄μ•Ό ν•  ν•„μš”κ°€ μƒκΉλ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄μ„œ λͺ¨λ“  숫자, λ˜λŠ” λͺ¨λ“  ꡬ두점, λ˜λŠ” ν•΄μ‹œ νƒœκ·Έλ‚˜ url λ˜λŠ” μ˜μ–΄ 단어듀을 λͺ¨λ‘ λ§€μΉ­ν•΄μ„œ μ²˜λ¦¬ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒμš”? μ΄λŸ¬ν•œ ν•„μš”λ₯Ό μΆ©μ‘±μ‹œν‚€λŠ” regex ꡬ성 방법에 λŒ€ν•΄μ„œ μ„€λͺ…λ“œλ¦¬λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

λ¦¬ν„°λŸ΄ 문자의 일치

μš°μ„ , κ°€μž₯ λ‹¨μˆœν•œ 일치둜 μ‹œμž‘ν•΄λ΄…μ‹œλ‹€. : 문자 κ·ΈλŒ€λ‘œμ˜ νŒ¨ν„΄ λ¦¬ν„°λŸ΄ 문자 μΌμΉ˜λŠ” 문자 β€œA”와 같은 μ£Όμ–΄μ§„ λ¬Έμžκ°€ 문자 β€œA”와 μΌμΉ˜ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 것은 κ·Έ 자체둜 μΌμΉ˜ν•˜κΈ° λ•Œλ¬Έμ— literal이라고 λΆˆλ¦¬μ›λ‹ˆλ‹€. 이 μœ ν˜•μ˜ μΌμΉ˜λŠ” κ°€μž₯ 기본적인 μœ ν˜•μ˜ μ •κ·œν‘œν˜„μ‹ μ—°μ‚°μž…λ‹ˆλ‹€. 일반 ν…μŠ€νŠΈμ™€ λ”°μ˜΄ν‘œλ§Œ μΌμΉ˜μ‹œν‚΅λ‹ˆλ‹€.

λ‹€μŒμ€ μ •κ·œν‘œν˜„μ‹μ— λŒ€ν•œ 기본적인 μ΄ν•΄μ˜ μ˜ˆμž…λ‹ˆλ‹€.

μš°λ¦¬κ°€ μ •κ·œν‘œν˜„μ‹μœΌλ‘œ λ§€μΉ­ν•  첫번째 λ¬Έμžμ—΄μ€ 단어 "아이폰"μž…λ‹ˆλ‹€. 이 λ¬Έμžμ—΄μ€ 문자 β€œμ•„β€, 문자 β€œμ΄β€, 문자 β€œν°β€μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μš°λ¦¬κ°€ regex νŒ¨ν„΄μ„ β€œμ•„μ΄ν°β€λ‘œ κ΅¬μ„±ν•œλ‹€λ©΄ 단어 β€œμ•„μ΄ν°12β€λΏλ§Œ μ•„λ‹ˆλΌ 단어 β€œμ•„μ΄ν°4”와 β€œμ•„μ΄ν°5” λ˜ν•œ λ§€μΉ­ν•˜λŠ” κ²°κ³Όλ₯Ό μ–»κ²Œ 될 κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ λ”°λΌμ„œ μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μ€ μ‹œμž‘κ³Ό 끝에 곡백이 μžˆμ–΄μ•Ό ν•˜κ² μ£ : " 아이폰 "

λ‹€μ‹œ ν•œλ²ˆ κ°•μ‘°ν•˜μžλ©΄, μ •κ·œν‘œν˜„μ‹μ—μ„œ 곡백은 문자둜 μΈμ‹λ©λ‹ˆλ‹€.

자 이제, λ¬Έμžμ—΄ 객체 content에 μ •κ·œν‘œν˜„μ‹μ„ μ μš©ν•΄ λ΄…μ‹œλ‹€.

μš°λ¦¬κ°€ κ΅¬μ„±ν•œ μ •κ·œν‘œν˜„μ΄ λ¬Έμžμ—΄ κ°μ²΄μ—μ„œ μ°Ύμ•„λ‚Έ 즉, 맀칭된 κ²°κ³Όλ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ μš°λ¦¬λŠ” str_extract_all() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κ² μŠ΅λ‹ˆλ‹€.

unlist(str_extract_all(content, pattern = " 아이폰 ")) # λ¬Έμžμ—΄ 객체가 λ¨Όμ € 였고 μ •κ·œν‘œν˜„μ‹μ˜ μ§€μ •λœ νŒ¨ν„΄μ΄ λ’€λ”°λ¦…λ‹ˆλ‹€. 
## [1] " 아이폰 " " 아이폰 " " 아이폰 " " 아이폰 " " 아이폰 "
# pattern 즉 μ •κ·œν‘œν˜„ ꡬ성을 μ§€μ •ν•˜λŠ” μ˜΅μ…˜κ°’ μ„€μ •

str_count(content, " 아이폰 ")
## [1] 5
str_count(content, " 아이폰12 ")
## [1] 3
unlist(str_extract_all(content, pattern = " 아이폰12 "))
## [1] " 아이폰12 " " 아이폰12 " " 아이폰12 "

이처럼 간단해 보일지 λͺ¨λ₯΄μ§€λ§Œ κ°•μ‘°ν•΄μ•Όν•  λͺ‡ κ°€μ§€ μ„ΈλΆ€ 사항이 μžˆμŠ΅λ‹ˆλ‹€. 첫 λ²ˆμ§ΈλŠ” μ•ŒνŒŒλ²³μ˜ 경우 μ •κ·œν‘œν˜„μ‹ 검색이 λŒ€μ†Œ 문자λ₯Ό κ΅¬λΆ„ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 말은 κ³§, β€œ5gβ€λΌλŠ” νŒ¨ν„΄μ€ content에 λ“±μž₯ν•˜λŠ” νŒ¨ν„΄β€œ5G”와 λ§€μΉ­λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€..

str_count(content, "5G")
## [1] 8
str_count(content, "5g")
## [1] 0
unlist(str_extract_all(content, "5g"))
## character(0)
unlist(str_extract_all(content, "5G"))
## [1] "5G" "5G" "5G" "5G" "5G" "5G" "5G" "5G"

μˆ«μžλŠ” μ–΄λ–¨κΉŒμš”? λ‹€ν–‰νžˆ λͺ¨λ“  숫자(λ¬Έμžλ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€)λŠ” λ¦¬ν„°λŸ΄ 문자둜 κ°„μ£Όλ©λ‹ˆλ‹€. νŒ¨ν„΄ β€œ12”을 ν…ŒμŠ€νŠΈ ν•΄λ΄…μ‹œλ‹€.

str_extract_all(content, "12") # λͺ¨λ“  μˆ«μžλŠ” λ¦¬ν„°λŸ΄ λ¬Έμžμž…λ‹ˆλ‹€.
## [[1]]
##  [1] "12" "12" "12" "12" "12" "12" "12" "12" "12" "12" "12" "12" "12" "12" "12"
## [16] "12"

메타 문자

이제 μš°λ¦¬λŠ” λ©”νƒ€λ¬Έμž(metacharacter)에 λŒ€ν•΄μ„œ ν•™μŠ΅ν•  κ²ƒμž…λ‹ˆλ‹€. κ°€μž₯ 기본적인 μœ ν˜•μ˜ μ •κ·œ ν‘œν˜„μ‹μ€ μžμ‹ κ³Ό μΌμΉ˜ν•˜λŠ” λ¦¬ν„°λŸ΄ λ¬Έμžμž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ λͺ¨λ“  λ¬Έμžκ°€ λ¦¬ν„°λŸ΄ λ¬ΈμžλŠ” μ•„λ‹™λ‹ˆλ‹€. μ •κ·œ ν‘œν˜„μ„ κ΅¬μ„±ν•˜λŠ” 데 μžˆμ–΄μ„œ 특수 λͺ©μ μ„ κ°–κ³  κ·Έ 역할을 μˆ˜ν–‰ν•˜λŠ” λ¬Έμžλ“€λ„ μžˆμŠ΅λ‹ˆλ‹€. 그것이 λ°”λ‘œ λ©”νƒ€λ¬Έμžμž…λ‹ˆλ‹€. 이런 μœ ν˜•μ˜ λ¬ΈμžλŠ” νŠΉλ³„ν•œ μ˜λ―Έκ°€ 있기 λ•Œλ¬Έμ— μΌκ΄„μ μœΌλ‘œ λ¦¬ν„°λŸ΄ λ¬Έμžλ“€μ„ μ°Ύμ•„λ‚΄λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€.

μ •κ·œν‘œν˜„μ‹μ—μ„œ metacharactersμ—λŠ” 15개의 μ’…λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. 각 κΈ°λŠ₯에 λŒ€ν•΄μ„œλŠ” μ•žμœΌλ‘œ μ μš©ν•΄κ°€λ©΄μ„œ λ°°μ›Œλ΄…μ‹œλ‹€.

β€œ[^[κ°€-힣]]?”

μ•žμœΌλ‘œ μš°λ¦¬λŠ” μ΄λŸ¬ν•œ 메타 문자λ₯Ό μ‘μš©ν•˜μ—¬ μ •κ·œ ν‘œν˜„μ„ κ΅¬μ„±ν•˜λŠ” 법을 μ•Œμ•„ λ³Ό κ²ƒμž…λ‹ˆλ‹€. 사싀, μ •κ·œ ν‘œν˜„μ‹μ—μ„œ μ€‘μš”ν•œ 것은 이 메타 λ¬Έμžκ°€ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ μ΄ν•΄ν•˜κ³  μ μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‹€ν–‰νžˆ, 메타 문자의 μ’…λ₯˜κ°€ μ•„μ£Ό λ§Žμ§€λŠ” μ•Šμ£ . ν•˜μ§€λ§Œ λͺ‡λͺ‡ 메타 λ¬Έμžμ—λŠ” ν•˜λ‚˜ μ΄μƒμ˜ 의미λ₯Ό κ°€μ§„ 것도 μžˆμŠ΅λ‹ˆλ‹€. 그리고 이 경우 메타 문자의 μ˜λ―ΈλŠ” μ‚¬μš©ν•˜λŠ” λ§₯락, μ‚¬μš© 방법, μ‚¬μš© μž₯μ†Œμ— 따라 λ‹¬λΌμ§€κ²Œ 되죠. 마치 μš°λ¦¬κ°€ μΌμƒμ μœΌλ‘œν•˜λŠ” λŒ€ν™”μ—μ„œλ„ 같은 μ–΄νœ˜λΌλ„, λ¬Έλ§₯에 따라 κ·Έ μ˜λ―Έκ°€ μ™„μ „νžˆ λ‹¬λΌμ§€κ²Œ λ˜λŠ” κ²½μš°κ°€ μžˆλŠ” 것 처럼 말이죠. λ”°λΌμ„œ μ΄λŸ¬ν•œ μ •κ·œ ν‘œν˜„μ˜ 메타 문자λ₯Ό μ΄ν•΄ν•˜κ³  μ‘μš©μ— μ΅μˆ™ν•΄μ§€λŠ” λ°μ—λŠ” μ‹œκ°„μ΄ λ‹€μ†Œ 걸릴 수 있으며 λ§Žμ€ μ—°μŠ΅μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

μ™€μΌλ“œ 메타 문자

μš°λ¦¬κ°€ 배울 첫 메타 λ¬ΈμžλŠ” wild 메타 문자둜 더 잘 μ•Œλ €μ§„ β€œ.”(점)μž…λ‹ˆλ‹€. 이 메타 λ¬ΈμžλŠ” λͺ¨λ“  λ¦¬ν„°λŸ΄ 문자λ₯Ό μ°ΎλŠ”λ° (λ§€μΉ­ν•˜λŠ”λ°) μ‚¬μš©λ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, " .+%"둜 κ΅¬μ„±λœ regexλ₯Ό μƒκ°ν•΄λ΄…μ‹œλ‹€. 이 ν‘œν˜„μ€ %둜 κ΅¬μ„±λœ λͺ¨λ“  ν‘œν˜„κ³Ό λ§€μΉ­λ©λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ ν•˜λ‚˜μ˜ 점은 ν•˜λ‚˜μ˜ 단일 문자(숫자)μ™€λ§Œ λ§€μΉ­λ˜λ―€λ‘œ {1,4} ν‘œν˜„μœΌλ‘œ μ•žμ„  ν‘œν˜„μ΄ 1회 이상, 4회 μ΄ν•˜λ‘œ λ“±μž₯ν•˜λŠ” νŒ¨ν„΄μœΌλ‘œ κ΅¬μ„±ν•©λ‹ˆλ‹€.

μœ„ν‚€ν”Όλ””μ•„ νŽ˜μ΄μ§€μ˜ ν…μŠ€νŠΈλ₯Ό 단어 λ‹¨μœ„λ‘œ ν† ν°ν™”ν•œ κ²°κ³Όκ°€ λ²‘ν„°λ‘œ ν• λ‹Ήλœ content 객체에 이 μ •κ·œν‘œν˜„μ„ μ μš©ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

str_extract_all(content, " .{1,4}%")
## [[1]]
## [1] " 16%"  " 8.3%" " 40%"  " 30%"  " 33%"
unlist(str_extract_all(content, " .{1,4}%"))
## [1] " 16%"  " 8.3%" " 40%"  " 30%"  " 33%"

μ™€μΌλ“œ 메타 λ¬ΈμžλŠ” μ •κ·œ ν‘œν˜„μ‹μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” 메타 문자 쀑 ν•˜λ‚˜μ΄μ§€λ§Œ λ§Žμ€ μ‹€μˆ˜μ˜ μ΄μœ κ°€ λ˜κΈ°λ„ ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, "e.g"와 μΌμΉ˜ν•˜λŠ” μ •κ·œ ν‘œν˜„μ‹μ„ λ§Œλ“€κ³  μ‹Άλ‹€κ³  κ°€μ •ν•΄λ΄…μ‹œλ‹€. 이 νŒ¨ν„΄μ€ β€œe.gβ€λΏλ§Œ μ•„λ‹ˆλΌ, β€œeng”, β€œe g”, β€œe-g”와도 μΌμΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ™œ?

μ™œλƒν•˜λ©΄ "."은 λͺ¨λ“  것과 μΌμΉ˜ν•˜λŠ” 메타 문자이기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

메타 문자 μ΄μŠ€μΌ€μ΄ν”„

κ·Έλ ‡λ‹€λ©΄ 메타 문자 λŒ€μ‹  λ¦¬ν„°λŸ΄ λ¬Έμžλ‘œμ„œμ˜ λ§ˆμΉ¨ν‘œλ₯Ό μ°Ύμ•„λ‚΄κ³  λ§€μΉ­μ‹œν‚¬ 수 μžˆμ„κΉŒμš”? 예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό 같은 λ¬Έμžμ—΄ 벑터가 μžˆλ‹€κ³  κ°€μ •ν•΄ λ΄…μ‹œλ‹€.

dot_words <- c("e.g", "eng", "e g", "e-g")
dot_words
## [1] "e.g" "eng" "e g" "e-g"

νŒ¨ν„΄ "e.g"λ₯Ό μ‚¬μš©ν•˜λ©΄, dot_words에 μžˆλŠ” λͺ¨λ“  μš”μ†Œμ™€ μΌμΉ˜ν•©λ‹ˆλ‹€.

unlist(str_extract_all(dot_words, "e\\.g"))
## [1] "e.g"

λ”°λΌμ„œ λ¦¬ν„°λŸ΄ 문자인 λ§ˆμΉ¨ν‘œμ™€ λ§€μΉ­μ‹œν‚€λ €λ©΄, 메타 문자λ₯Ό μ΄μŠ€μΌ€μ΄ν”„ μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 메타 문자λ₯Ό μ΄μŠ€μΌ€μ΄ν”„ν•˜λŠ” 방법은 메타 문자 μ•žμ— λ°± μŠ¬λž˜μ‹œ 문자λ₯Ό μΆ”κ°€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 메타 문자 μ•žμ— λ°± μŠ¬λž˜μ‹œλ₯Ό 뢙이면 λ©”νƒ€λ¬Έμžλ‘œμ„œμ˜ 더 이상 νŠΉλ³„ν•œ 의미λ₯Ό κ°€μ§€μ§€ μ•ŠμœΌλ©° λ¦¬ν„°λŸ΄ λ¬Έμžλ‘œμ„œ μΈμ‹ν•˜κ²Œ λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ R은 쑰금 λ‹€λ¦…λ‹ˆλ‹€. 단일 λ°±μŠ¬λž˜μ‹œλ₯Ό λ„£λŠ” 것이 μ•„λ‹ˆλΌ 2개의 λ°± μŠ¬λž˜μ‹œλ₯Ό λ„£μ–΄μ•Ό ν•©λ‹ˆλ‹€. : "e\\.g". 단일 λ°± μŠ¬λž˜μ‹œ "\"κ°€ Rμ—μ„œλŠ” 메타 문자둜 λ‹€λ₯Έ 의미λ₯Ό κ°€μ§€κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

unlist(str_extract_all(dot_words, "e\\.g"))
## [1] "e.g"

ν€΄μ¦ˆ

λ‰΄μŠ€ ν…μŠ€νŠΈμ˜ λ¬Έμžμ—΄ 벑터 객체인 contentμ—μ„œ λ¦¬ν„°λŸ΄ 문자,β€œν°β€μ΄ ν¬ν•¨λœ λͺ¨λ“  단어듀을 λͺ¨λ‘ μ°Ύμ•„λ‚΄μ–΄ μΆ”μΆœν•˜λŠ” λͺ…λ Ήμ–΄λŠ”?

  1. λ‹¨μ–΄μ˜ 기쀀은 빈칸으둜 κ΅¬λΆ„λœ λ¬Έμžμ—΄
  2. λ‹¨μ–΄λŠ” ν•œκΈ€ 문자만 포함 (숫자, ꡬ두점 μ œμ™Έ)
str_extract_all(content, " [κ°€-힣]*폰[κ°€-힣]*[0-9]* ")
## [[1]]
##  [1] " 아이폰 "   " 아이폰 "   " 아이폰12 " " 아이폰12 " " 아이폰 "  
##  [6] " 아이폰 "   " 아이폰 "   " νœ΄λŒ€ν° "   " 슀마트폰 " " 아이폰12 "

μ •κ·œ ν‘œν˜„μ‹ μ—°μŠ΅

μ§€κΈˆκΉŒμ§€ 메타 문자λ₯Ό μ΄μŠ€μΌ€μ΄ν”„(νƒˆμΆœ)ν•˜μ—¬ λ¦¬ν„°λŸ΄ λ¬Έμžλ‘œμ„œ λ§€μΉ­ν•˜λŠ” 방법에 λŒ€ν•΄ ν•™μŠ΅ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ΄μ œλΆ€ν„°λŠ” 문자 집합을 μ •μ˜ν•˜λŠ”λ°μ— μ‚¬μš©λ˜λŠ” 메타 문자인 λŒ€κ΄„ν˜Έ []에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

κ°€λ Ή, μš°λ¦¬κ°€ β€œν°β€λ‘œ λλ‚˜λŠ” 단어 λͺ¨λ‘λ₯Ό μ°Ύμ•„λ‚΄μ„œ μ§€μ›Œμ£Όκ³  μ‹Άλ‹€κ³  κ°€μ •ν•΄ λ΄…μ‹œλ‹€. 이 경우 μš°λ¦¬λŠ” μ•žμ„œ 올 수 μžˆλŠ” λͺ¨λ“  문자의 경우λ₯Ό κ°€μ •ν•΄μ„œ 단어 μ§‘ν•©μœΌλ‘œ κ΅¬μ„±λœ μ •κ·œ ν‘œν˜„μ„ μ΄μš©ν•΄ 쀄 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, κ·ΈλŸ¬λ‚˜ μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ μš°λ¦¬κ°€ μ›ν•˜λŠ” λͺ¨λ“  문자λ₯Ό λ§€μΉ­ν•˜λŠ” 것은 맀우 μ†Œλͺ¨μ μΈ 일일 κ²ƒμž…λ‹ˆλ‹€. 이 κ²½μš°μ— μš°λ¦¬λŠ” 문자 κ·Έ μžμ²΄μ™€ μΌμΉ˜ν•˜μ§€λŠ” μ•Šμ§€λ§Œ μ›ν•˜λŠ” λ¬Έμžλ“€μ˜ λ²”μœ„λ₯Ό μ§€μ •ν•΄μ£ΌλŠ” λ°©λ²•μœΌλ‘œ νŒ¨ν„΄μ„ λ§€μΉ­ν•˜λŠ” 방법을 택할 수 μžˆμŠ΅λ‹ˆλ‹€.

문자 μ§‘ν•©

문자 집합은 μ§‘ν•© μ•ˆμ— μžˆλŠ” λ‹€μ–‘ν•œ 문자 쀑 ν•˜λ‚˜μ™€ μΌμΉ˜ν•©λ‹ˆλ‹€. 즉, "[abc]"λΌλŠ” ν‘œν˜„μ€ 문자 β€œa”, β€œb”, β€œc” 쀑 μ–΄λ–€ 것과도 λ§€μΉ­λ©λ‹ˆλ‹€. μ—¬κΈ°μ„œ λŒ€κ΄„ν˜Έ []λŠ” 문자 집합을 μ •μ˜ν•˜λŠ” ν‘œν˜„μž…λ‹ˆλ‹€.

문자 μ§‘ν•© λ‚΄μ˜ 문자 μˆœμ„œλŠ” μ€‘μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ€‘μš”ν•œ 것은 λŒ€κ΄„ν˜Έ μ•ˆμ— μžˆλŠ” 문자의 μ’…λ₯˜μž…λ‹ˆλ‹€. λ”°λΌμ„œ 문자 μ§‘ν•© "[abc]"λŠ” "[cba]"와 같은 κΈ°λŠ₯을 ν•©λ‹ˆλ‹€.

문자 μ§‘ν•©μ˜ 적용

"f[aeiou]n"λΌλŠ” μ •κ·œ ν‘œν˜„ νŒ¨ν„΄μœΌλ‘œ β€œfan”, β€œfin”, β€œfunβ€λΌλŠ” 단어 등이 μ†ν•΄μžˆλŠ” λ¬Έμžμ—΄ 벑터에 λ§€μΉ­ν•΄λ΄…μ‹œλ‹€.

library(stringr)
fns <- c("fan","fen","fin","fon","fun")
unlist(str_extract_all(fns, "f[aeiou]n")) #μ•ŒνŒŒλ²³ λͺ¨μŒ μ§‘ν•©
## [1] "fan" "fen" "fin" "fon" "fun"

β€œf[aeiou]n” 집합은 fns의 λͺ¨λ“  μš”μ†Œμ™€ μΌμΉ˜ν•©λ‹ˆλ‹€. 이제 같은 문자 μ§‘ν•© νŒ¨ν„΄μ„ λ‹€λ₯Έ 벑터 fnx에 μ μš©ν•΄ λ΄…μ‹œλ‹€.

fnx <- c("fan","fin","fun","f0n","f.n","f1n","fain")
unlist(str_extract_all(fnx, "f[aeiou][aeiou]n"))
## [1] "fain"

λ³΄λ‹€μ‹œν”Ό fnx μ•ˆμ— λͺ¨μŒ λ¬Έμžκ°€ μžˆλŠ” 처음 μ„Έ μš”μ†Œλ§Œ μΌμΉ˜ν•©λ‹ˆλ‹€. 그리고 λ§ˆμ§€λ§‰ μš”μ†Œ β€œfain”은 μΌμΉ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 문자 집합은 ν•˜λ‚˜μ˜ λ¬Έμžλ‘œμ„œ β€œa” λ˜λŠ” β€œi” μ—λ§Œ μΌμΉ˜ν•˜κ³  β€œaiβ€λŠ” λ§€μΉ­ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

str_extract_all(content, "[κ°€-힣][κ°€-힣]폰")
## [[1]]
##  [1] "아이폰" "아이폰" "아이폰" "아이폰" "아이폰" "아이폰" "아이폰" "아이폰"
##  [9] "아이폰" "아이폰" "아이폰" "아이폰" "이어폰" "아이폰" "아이폰" "아이폰"
## [17] "아이폰" "아이폰" "아이폰" "아이폰" "νœ΄λŒ€ν°" "마트폰" "아이폰" "아이폰"
str_extract_all(content, "[κ°€-힣]+폰")
## [[1]]
##  [1] "아이폰"     "아이폰"     "아이폰"     "아이폰"     "아이폰"    
##  [6] "아이폰"     "아이폰"     "아이폰"     "아이폰"     "아이폰"    
## [11] "아이폰"     "아이폰"     "μœ μ„ μ΄μ–΄ν°" "아이폰"     "아이폰"    
## [16] "아이폰"     "아이폰"     "아이폰"     "아이폰"     "아이폰"    
## [21] "νœ΄λŒ€ν°"     "슀마트폰"   "아이폰"     "아이폰"

문자 λ²”μœ„

μœ„μ—μ„œ μ„€λͺ…ν•œ 문자 집합은 찾고자 ν•˜λŠ” 문자 λͺ¨λ‘λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ•ŒνŒŒλ²³(λŒ€λ¬Έμž λ˜λŠ” μ†Œλ¬Έμž)의 λ²”μœ„ λ˜λŠ” μž„μ˜μ˜ 숫자 λ²”μœ„μ— μ†ν•˜λŠ” μ–΄λ–€ λ¬Έμžμ™€λ„ λ§€μΉ­λ˜λŠ” 문자 집합은 μ–΄λ–»κ²Œ ꡬ성할 수 μžˆμ„κΉŒμš”?

메타 문자 ν•˜μ΄ν”ˆμ„(hyphen) "-" μ‚¬μš©ν•΄μ„œ 문자 λ²”μœ„λ₯Ό κ΅¬μ„±ν•˜λ©΄ 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 즉, λ§€μΉ­ν•˜κ³ μž ν•˜λŠ” λ¬Έμžλ“€μ˜ λ²”μœ„λ₯Ό ν•˜μ΄ν”ˆ "-" 기호둜 μ§€μ •ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ λ‹€μŒκ³Ό 같이 λŒ€λ¬Έμž, μ†Œλ¬Έμž, 그리고 숫자 문자 집합을 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

uppercase <- "[A-Z]"

lowercase <- "[a-z]"

number <- "[0-9]"

ν•œκΈ€ 문자 <- "[κ°€-힣]"

*ν•˜μ΄ν”ˆ κΈ°ν˜ΈλŠ” 문자 μ§‘ν•© μ•ˆμ— μžˆμ„ λ•Œλ§Œ 메타 λ¬Έμžμž…λ‹ˆλ‹€. 문자 μ§‘ν•© μ΄μ™Έμ—μ„œ μ“°μ΄λŠ” ν•˜μ΄ν”ˆμ€ λ¦¬ν„°λŸ΄ λ¬Έμžμž…λ‹ˆλ‹€.

μ΄λ ‡κ²Œ 문자 λ²”μœ„λ‘œ κ΅¬μ„±λœ μ •κ·œ ν‘œν˜„μ€ 맀우 μœ μš©ν•©λ‹ˆλ‹€. λ‹€μŒμ˜ 예λ₯Ό ν•¨κ»˜ λ³΄μ‹€κΉŒμš”.

3개의 문자둜 κ΅¬μ„±λœ λ¬Έμžμ—΄μ„ κ°€μ§„ λ‹€μŒμ˜ 벑터 객체, triplets,λ₯Ό μƒλŒ€λ‘œ 문자 λ²”μœ„λ‘œ κ΅¬μ„±λœ μ •κ·œν‘œν˜„μœΌλ‘œ λ§€μΉ­ν•œ κ²°κ³Όλ₯Ό μ‚΄νŽ΄λ΄…μ‹œλ‹€.

triplets <- c("abc","the","ABC","The","아이폰","γ…‡γ…ˆγ…‘","010","070",":~)","^^;")
unlist(str_extract_all(triplets, "[a-z][a-z][a-z]")) # 3개의 μ—°μ†λœ μ†Œλ¬Έμž 
## [1] "abc" "the"
unlist(str_extract_all(triplets, "[A-Z]{3}")) # 3개의 μ—°μ†λœ λŒ€λ¬Έμž 
## [1] "ABC"
unlist(str_extract_all(triplets, "[A-Z][a-z]+")) # λŒ€λ¬Έμžλ₯Ό λ¨Όμ € μ“°κ³  κ·Έ λ‹€μŒ μ†Œλ¬Έμž 1회 이상 
## [1] "The"
unlist(str_extract_all(triplets, "[κ°€-힣]+")) 
## [1] "아이폰"
unlist(str_extract_all(triplets, "[γ„±-γ…Ž]+"))
## [1] "γ…‡γ…ˆ"
unlist(str_extract_all(triplets, "[γ„±-γ…£]+"))
## [1] "γ…‡γ…ˆγ…‘"
unlist(str_extract_all(triplets, "[ㅏ-γ…£]+"))
## [1] "γ…‘"
unlist(str_extract_all(triplets, "[0-9]+$")) # μ—°μ†λœ 숫자 1회 이상이고 숫자둜 μ’…κ²°
## [1] "010" "070"

μ΄λ ‡κ²Œ 문자 λ²”μœ„λ‘œ κ΅¬μ„±λœ 문자 집합을 μ΄μš©ν•˜λ©΄ νŽΈλ¦¬ν•˜κ²Œ ν…μŠ€νŠΈ νŒ¨ν„΄μ„ λ§€μΉ­ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, μœ„μ˜ 문자 λ²”μœ„λ‘œλŠ” κ΅¬λ‘μ μœΌλ‘œ κ΅¬μ„±λœ μ›ƒμŒ ν‘œμ‹œ ":~)"와 "^^;"λ₯Ό λ§€μΉ­ν•  μˆ˜λŠ” μ—†μ—ˆλ„€μš”.

λΆ€μ • 문자 μ§‘ν•©

μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ ν…μŠ€νŠΈλ₯Ό μ²˜λ¦¬ν•  λ•Œ, νŠΉμ • 문자 μ§‘ν•©μ—μ„œ λ²—μ–΄λ‚˜λŠ” 즉, 문자 μ§‘ν•©μ˜ 일뢀가 μ•„λ‹Œ 문자λ₯Ό μ°Ύμ•„λ‚΄μ•Ό ν•˜λŠ” 상황은 λΉˆλ²ˆν•˜κ²Œ λ°œμƒν•©λ‹ˆλ‹€. μœ„ν‚€ν”Όλ””μ•„ νŽ˜μ΄μ§€μ˜ μ „μ²˜λ¦¬λ₯Ό 예λ₯Ό λ“€μ–΄ λ³ΌκΉŒμš”. 이 λ•Œ μš°λ¦¬λŠ” μ•ŒνŒŒλ²³ μ΄μ™Έμ˜ 문자 즉, ν•œκΈ€ λ˜λŠ” ν•œμžλ‘œ ν‘œμ‹œλœ 문자λ₯Ό λ§€μΉ­ν•΄μ„œ μ§€μ›Œμ€˜μ•Ό ν•  ν•„μš”κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ μš°λ¦¬λŠ” λΆ€μ • 문자 집합을 μ‚¬μš©ν•˜μ—¬ μš°λ¦¬κ°€ μ›ν•˜λŠ” 문자 집합에 μ—†λŠ” 문자λ₯Ό μ°Ύμ•„λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 이 λΆ€μ • 집합은 μœ„ν•΄ 메타 문자 캐럿 "^"으둜 ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

캐럿 "^"은 μ •κ·œ ν‘œν˜„μ‹μ˜ νŒ¨ν„΄μ— ν•˜λ‚˜ μ΄μƒμ˜ 의미λ₯Ό κ°€μ§€λŠ” 메타 문자 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. κ·Έ 쀑, 문자 μ§‘ν•© μ•ˆμ˜ 첫번째 μœ„μΉ˜μ— μΊλŸΏμ„ μ‚¬μš©ν•˜λ©΄ : 예 : "[^a-z]", λ‹€μŒμ˜ 문자 μ΄μ™Έμ˜ 문자 즉, λΆ€μ • κΈ°λŠ₯을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. λ”°λΌμ„œ μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ₯Ό μ œμ™Έν•œ λͺ¨λ“  문자λ₯Ό λ§€μΉ­ν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ λΆ€μ • 문자 λ²”μœ„λ₯Ό μ‚¬μš©ν•˜λ©΄ μš°λ¦¬λŠ” λ‹€μŒκ³Ό 같은 "[^a-zA-Z0-9][^a-zA-Z0-9][^a-zA-Z0-9]" νŒ¨ν„΄μ„ μ •μ˜ν•¨μœΌλ‘œμ¨ λ¬Έμžμ™€ μˆ«μžκ°€ μ•„λ‹Œ 기호둜 ν‘œμ‹œλœ λ¬Έμžμ—΄μΈ μ›ƒμŒ ν‘œμ‹œ ":~)" 와 "^^;"λ₯Ό λ§€μΉ­ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

unlist(str_extract_all(triplets, "[^a-zA-Z0-9]{1,}")) # μ•ŒνŒŒλ²³ 문자 및 숫자 μ΄μ™Έμ˜ λ¬Έμžκ°€ 1회 이상 λ§€μΉ­λ˜λŠ” λͺ¨λ“  μš”μ†Œ
## [1] "아이폰" "γ…‡γ…ˆγ…‘" ":~)"    "^^;"

μΊλŸΏμ€ 문자 μ§‘ν•© μ•ˆμ— 처음으둜 μ˜€λŠ” κ²½μš°μ—λ§Œ 뢀정을 μ˜λ―Έν•˜λ©°, κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ λΆ€μ • 문자 집합이 μ•„λ‹™λ‹ˆλ‹€. κ°€λ Ή,

unlist(str_extract_all(triplets, "[a-zA-Z0-9^;]+")) # μ•ŒνŒŒλ²³λ¬Έμž/숫자/캐럿 1회 이상 μ—°κ²°λ˜λŠ” λ¬Έμžμ—΄ λ§€μΉ­
## [1] "abc" "the" "ABC" "The" "010" "070" "^^;"

이 경우, νŒ¨ν„΄ "[a-zA-Z0-9^]"은 λΆ€μ • μ§‘ν•© "[^a-zA-Z0-9]"κ³Ό μ™„μ „νžˆ λ‹€λ₯Έ β€œλ¬Έμž λ˜λŠ” 숫자 λ˜λŠ” λ¦¬ν„°λŸ΄ 캐럿 λ¬Έμžβ€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

문자 μ§‘ν•© μ•ˆμ˜ 메타 문자

μ§€κΈˆκΉŒμ§€ 문자 집합이 무엇인지, 그리고 문자 λ²”μœ„λ₯Ό μ •μ˜ν•˜λŠ” 방법과 λΆ€μ • 문자 집합을 μ§€μ •ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 이제 문자 μ§‘ν•© μ•ˆμ— 메타 문자λ₯Ό ν¬ν•¨μ‹œν‚¬ λ•Œ μ–΄λ–€ 일이 μΌμ–΄λ‚˜λŠ”μ§€ λ³΄κ² μŠ΅λ‹ˆλ‹€.

문자 집합을 μ‚¬μš©ν•  경우 첫 번째 μœ„μΉ˜μ— μžˆλŠ” 캐럿, 그리고 문자 λ²”μœ„λ₯Ό μ§€μ •ν•˜λŠ” ν•˜μ΄ν”ˆ, 그리고 문자 μ§‘ν•© 기호인 λŒ€κ΄„ν˜Έλ₯Ό μ œμ™Έν•˜κ³ λŠ”, 문자 μ§‘ν•© λ‚΄μ˜ 메타 λ¬ΈμžλŠ” λ¦¬ν„°λŸ΄ λ¬Έμžλ‘œμ„œ κΈ°λŠ₯ν•©λ‹ˆλ‹€! 즉, 문자 μ§‘ν•© μ•ˆμ—μ„œλŠ” 이쀑 λ°± μŠ¬λž˜μ‹œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄μŠ€μΌ€μ΄ν”„ μ²˜λ¦¬ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, fnx λ¬Έμžμ—΄ λ²‘ν„°μ—μ„œ β€œf” 와 β€œn” 사이에 μœ„μΉ˜ν•˜λŠ” λ‹€μ–‘ν•œ λ¬ΈμžλŠ” λ¦¬ν„°λŸ΄ 문자인 λ§ˆμΉ¨ν‘œλ„ ν¬ν•¨ν•˜μ£ . 이 λ•Œ μš°λ¦¬κ°€ β€œf.nβ€μ΄λΌλŠ” λ¬Έμžμ—΄μ„ λ§€μΉ­ν•˜κΈ° μœ„ν•΄μ„œ ꡬ성할 수 μžˆλŠ” μ •κ·œ ν‘œν˜„μ€ λ©”νƒ€λ¬Έμžλ₯Ό μ΄μŠ€μΌ€μ΄ν”„ν•˜κ±°λ‚˜ λ¬Έμžμ§‘ν•©μ„ μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

unlist(str_extract_all(fnx, "f\\.n")) 
## [1] "f.n"
unlist(str_extract_all(fnx, "f[.]n")) 
## [1] "f.n"

문자 클래슀

문자 λ²”μœ„ 이외에도 문자 ν΄λž˜μŠ€λŠ” νŠΉμ • 문자 집단을 λ§€μΉ­ν•˜λŠ”λ° μœ μš©ν•œ μ •κ·œ ν‘œν˜„ ꡬ쑰λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 그리고 문자 클래슀의 ꡬ성은 이쀑 λ°±μŠ¬λž˜μ‹œμ™€ μ΄λ‹ˆμ…œ 문자둜 μ‹œμž‘ν•©λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ μ •κ·œ ν‘œν˜„μ‹ μ—”μ§„μ—μ„œ μ‚¬μš©λ˜λŠ” κ°€μž₯ 일반적인 문자 ν΄λž˜μŠ€λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

문자 일치 같은 ν‘œν˜„
\\d μž„μ˜μ˜ 숫자 [0-9]
\\D μž„μ˜μ˜ 숫자 μ΄μ™Έμ˜ 문자 [^0-9]
\\w 밑쀄 문자 "_"λ₯Ό ν¬ν•¨ν•˜μ—¬ μ˜μ–΄ λ‹¨μ–΄μ˜ μΌλΆ€λ‘œ κ°„μ£Όλ˜λŠ” 문자 [a-zA-Z0-9_]
\\W μ˜μ–΄ λ‹¨μ–΄μ˜ μΌλΆ€λ‘œ κ°„μ£Όλ˜μ§€ μ•ŠλŠ” 문자 [^a-zA-Z0-9_]
\\s 곡백 문자 [\f\n\r\t\v]
\\S 비곡백 문자 [^\f\n\r\t\v]

문자 ν΄λž˜μŠ€λŠ” 문자 집합을 μ‰½κ²Œ λ§€μΉ˜ν•˜λŠ” 메타 문자둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

unlist(str_extract_all(triplets, "\\d{3}")) # 3개의 μž„μ˜μ˜ 숫자 μ—°κ²°λœ νŒ¨ν„΄
## [1] "010" "070"
unlist(str_extract_all(triplets, "\\D+")) # 1개 이상 μ—°μ†λœ λΉ„ 숫자 νŒ¨ν„΄
## [1] "abc"    "the"    "ABC"    "The"    "아이폰" "γ…‡γ…ˆγ…‘" ":~)"    "^^;"
unlist(str_extract_all(triplets, "\\w+")) # 1개 이상 μ—°μ†λœ 문자/숫자
## [1] "abc"    "the"    "ABC"    "The"    "아이폰" "γ…‡γ…ˆγ…‘" "010"    "070"
unlist(str_extract_all(triplets, "\\W+")) # 1개 이상 μ—°μ†λœ 문자/숫자
## [1] ":~)" "^^;"
unlist(str_extract_all(triplets, "\\s+")) # 1개 이상 μ—°μ†λœ 곡백
## character(0)
unlist(str_extract_all(triplets, "\\S+")) # 1개 이상 μ—°μ†λœ 비곡백 문자
##  [1] "abc"    "the"    "ABC"    "The"    "아이폰" "γ…‡γ…ˆγ…‘" "010"    "070"   
##  [9] ":~)"    "^^;"

ν…μŠ€νŠΈ μ‚¬μ „μ²˜λ¦¬λ₯Ό ν•˜λ‹€ 보면 ν…μŠ€νŠΈ 곡백이 λ‹€μ–‘ν•œ λ°©μ‹μ˜ 문자 ν‘œν˜„μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€λŠ” 것을 λ°œκ²¬ν•˜κ²Œ 될 κ²ƒμž…λ‹ˆλ‹€. λ‹€μŒμ€ 곡백을 λ‚˜νƒ€λ‚΄λŠ” 문자λ₯Ό λ³΄μ—¬μ£ΌλŠ” ν‘œμž…λ‹ˆλ‹€. :

문자 μ •μ˜
\f νŽ˜μ΄μ§€ λ„˜κΉ€
\n μ€„λ°”κΏˆ
\r 캐리지 리턴
\t νƒ­
\v 수직 νƒ­

λ•Œλ‘œλŠ” ν…μŠ€νŠΈμ— μΈμ‡„λ˜μ§€ μ•ŠλŠ” 곡백 λ¬Έμžκ°€ ν¬ν•¨λ©λ‹ˆλ‹€. (\t, \n, \r\n) κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λͺ¨λ“  곡백 문자 μœ ν˜•μ„ μΌμΉ˜μ‹œν‚€κΈ° μœ„ν•΄ 곡백 문자 클래슀 \\sλ₯Ό μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.

Mac OSλŠ” \n을 μ‚¬μš©ν•˜λŠ” λ°˜λ©΄μ—, WindowλŠ” \r\n을 쀄 끝 ν‘œμ‹œλ‘œ μ‚¬μš©ν•˜λŠ” μš΄μ˜μ²΄μ œμž…λ‹ˆλ‹€.

  • νŽ˜μ΄μ§€ λ„˜κΉ€ \fλŠ” λ‹€μŒ β€˜νŽ˜μ΄μ§€β€™ λ˜λŠ” β€™μ„Ήμ…˜β€™μ„ ꡬ뢄 기호둜 μ‚¬μš©ν•˜μ—¬ μ•„λž˜μͺ½μœΌλ‘œ κ°€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.
  • 캐리지 리턴 \r은 μ€„μ˜ 처음으둜 λŒμ•„κ°€λŠ” κ²ƒμž…λ‹ˆλ‹€.

POSIX (Portable Operating System Interface) 문자 클래슀

μ •κ·œ ν‘œν˜„μ‹μ„ ꡬ성 방법을 λ§ˆλ¬΄λ¦¬ν•˜κΈ° μœ„ν•΄ POSIX둜 μ•Œλ €μ§„ 또 λ‹€λ₯Έ μœ ν˜•μ˜ 문자 클래슀λ₯Ό μ†Œκ°œν•©λ‹ˆλ‹€. λ‹€μŒμ€ Rμ—μ„œ μ •κ·œν‘œν˜„μ‹ 엔진이 μ§€μ›ν•˜λŠ” POSIX 문자 클래슀 κ΅¬μ‘°μž…λ‹ˆλ‹€. :

문자 일치 같은 ꡬ쑰
[[:alnum:]] 영숫자 [a-zA-Z0-9]
[[:alpha:]] μ•ŒνŒŒλ²³ 문자 [a-zA-Z]
[[:digit:]] 숫자 [0-9]
[[:lower:]] μ†Œλ¬Έμž [a-z]
[[:upper:]] λŒ€λ¬Έμž [A-Z]
[[:word:]] 단어 (문자, 숫자, μ–Έλ”μŠ€μ½”μ–΄) [a-zA-Z0-9_]
[[:blank:]] 곡백과 νƒ­ [ \t]
[[:space:]] λͺ¨λ“  곡백 문자(쀄 λ°”κΏˆ 포함) [ \f\n\r\t\v]
[[:punct:]] ꡬ두점과 기호
[[:graph:]] 곡백을 μ œμ™Έν•œ λͺ¨λ“  인쇄 κ°€λŠ₯ν•œ 문자 [:alnum:][:punct:]
[[:print:]] 인쇄 κ°€λŠ₯ν•œ λͺ¨λ“  문자 [:alnum:][:punct:][:space:]
[[:ascii:]] λͺ¨λ“  ASCII 문자 (μ•ŒνŒŒλ²³)

[^[:ascii:]]

POSIX 문자 ν΄λž˜μŠ€λŠ” μ—¬λŠ” λŒ€κ΄„ν˜Έ [, 뒀에 콜둠 :, ν‚€μ›Œλ“œ 뒀에 이어 콜둠 :, λ‹«λŠ” λŒ€κ΄„ν˜Έ ]둜 κ΅¬μ„±λ©λ‹ˆλ‹€.

Rμ—μ„œ μ‚¬μš©ν•˜λ €λ©΄ 문자 μ§‘ν•© μ•ˆμ— POSIX 클래슀λ₯Ό λž˜ν•‘ν•΄μ•Ό ν•©λ‹ˆλ‹€. 즉, POSIX 클래슀λ₯Ό λ‹€λ₯Έ 쌍의 λŒ€κ΄„ν˜Έλ‘œ λ¬Άμ–΄μ•Όν•©λ‹ˆλ‹€. POSIX 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ tripletsλΌλŠ” 문자 λ²‘ν„°μ˜ μš”μ†Œλ₯Ό λ§€μΉ˜μ‹œμΌœ λ΄…μ‹œλ‹€.

triplets
##  [1] "abc"    "the"    "ABC"    "The"    "아이폰" "γ…‡γ…ˆγ…‘" "010"    "070"   
##  [9] ":~)"    "^^;"
unlist(str_extract_all(triplets, "[[:lower:]]+")) # 1개 μ΄μƒμ˜ μ—°μ†λœ 문자
## [1] "abc" "the" "he"
unlist(str_extract_all(triplets, "[[:alpha:]]+"))
## [1] "abc"    "the"    "ABC"    "The"    "아이폰" "γ…‡γ…ˆγ…‘"
unlist(str_extract_all(triplets, "[[:digit:]]{1,3}")) # 1개 이상 3개 μ΄ν•˜λ‘œ μ—°μ†λœ 숫자
## [1] "010" "070"
unlist(str_extract_all(triplets, "[[:punct:]~^]+")) # [:punct:] λ¦¬ν„°λŸ΄ 문자 캐럿 "^" "~"을 λ§€μΉ­ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
## [1] ":~)" "^^;"
unlist(str_extract_all(triplets, "[[:lower:][:punct:]]")) # λͺ¨λ“  단일 μ†Œλ¬Έμž/ꡬ두점
##  [1] "a" "b" "c" "t" "h" "e" "h" "e" ":" ")" ";"
unlist(str_extract_all(triplets, "[^[:ascii:]]+"))
## [1] "아이폰" "γ…‡γ…ˆγ…‘"
str_remove_all(content, "[a-zA-Z]+")
## [1] "\n\t \n\t \n\n \n [이데일리 μž₯μ˜μ€ 기자] β€˜μ•„μ΄ν°12’(κ°€μΉ­) μ΄λ²ˆμ£Όμ— λ“œλ””μ–΄ 베일을 λ²—λŠ”λ‹€. μ˜ˆλ…„λ³΄λ‹€ 아이폰 μ‹ μž‘μ˜ 곡개 및 μΆœμ‹œ 일정이 ν•œλ‹¬ κ°€λŸ‰ λŠ¦μ–΄μ§€λ©΄μ„œ β€˜μ• ν”Œ νŒ¬β€™λ“€μ˜ κΈ°λŒ€κ°μ€ 더 λ†’μ•„μ Έ μžˆλŠ” μƒνƒœλ‹€.  아이폰 12 μ‹œλ¦¬μ¦ˆλŠ” △아이폰12 λ―Έλ‹ˆ(5.4인치) △아이폰12(6.1인치) △아이폰12 ν”„λ‘œ(6.1인치) △아이폰12 ν”„λ‘œ λ§₯슀(6.7인치) λ“± 4μ’…μœΌλ‘œ μΆœμ‹œλ  μ˜ˆμ •μ΄λ‹€. μ—­λŒ€ 라인업 쀑 κ°€μž₯ λ§Žμ€ λͺ¨λΈλ‘œ κ΅¬μ„±λœλ‹€.  μš°μ„  κ°€μž₯ 크게 μ£Όλͺ©μ„ λ°›κ³  μžˆλŠ” 뢀뢄은 μ• ν”Œμ˜ 첫번째 5ν°μ΄λΌλŠ” 점이닀. μ‚Όμ„±μ „μž(005930)κ°€ 세계 졜초 5폰인 β€˜κ°€λŸ­μ‹œ10’을 μΆœμ‹œν•œμ§€ 1λ…„ 7κ°œμ›”λ§Œμ΄λ‹€. κ·Έλ™μ•ˆ μ—…κ³„μ—μ„œλŠ” β€˜μ™„λ²½ν•˜μ§€ μ•ŠμœΌλ©΄ λ‚΄μ§€ μ•ŠλŠ”λ‹€β€™λŠ” μ• ν”Œμ˜ μ² ν•™ λ•Œλ¬Έμ— 5폰 μΆœμ‹œκ°€ λŠ¦μ–΄μ§€λŠ” κ²ƒμ΄λΌλŠ” 해석도 λ‚˜μ™”λ‹€.  ꡭ내에 μΆœμ‹œλ˜λŠ” 아이폰12 μ‹œλ¦¬μ¦ˆλŠ” 4μ’… λͺ¨λ‘ 6κΈ°κ°€ν—€λ₯΄μΈ () λŒ€μ—­ μ΄ν•˜(μ„œλΈŒ6) 5 λͺ¨λΈλ‘œ μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. λ‹€λ§Œ, μ΅œμƒμœ„ λͺ¨λΈμΈ β€˜μ•„μ΄ν°12 ν”„λ‘œ λ§₯μŠ€β€™μ˜ λ―Έκ΅­ μΆœμ‹œ λͺ¨λΈμ—λŠ” 28의 초고주파() λŒ€μ—­ μ•ˆν…Œλ‚˜κ°€ νƒ‘μž¬λ  κ²ƒμ΄λž€ 전망이 λ‚˜μ˜¨λ‹€. 배터리 절감 μ°¨μ›μ—μ„œ 4와 5λ₯Ό 선택할 수 μžˆλŠ” 슀마트 데이터λͺ¨λ“œκ°€ λ„μž…λœλ‹€.  μ• ν”Œμ˜ μ΅œμ‹ ν˜• μΉ©μ…‹ β€˜14 λ°”μ΄μ˜€λ‹‰β€™μ΄ 보여쀄 κ°•λ ₯ν•œ μ„±λŠ₯에도 이λͺ©μ΄ 쏠린닀. μ• ν”Œμ€ 자체 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œμ„Έμ„œ()의 μ„±λŠ₯이 동급 μ΅œκ°•μ΄λΌλŠ” μžλΆ€ν•˜κ³  μžˆλ‹€.  μ• ν”Œ 졜초둜 β€˜5λ‚˜λ…Έλ―Έν„°β€™ 곡정 기술이 적용된 14λŠ” 13보닀 μ€‘μ•™μ²˜λ¦¬μž₯치()와 κ·Έλž˜ν”½μ²˜λ¦¬μž₯치()의 속도λ₯Ό 각각 16%, 8.3% ν–₯μƒμ‹œν‚¬ κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜κ³  μžˆλ‹€. 12와 λΉ„κ΅ν•˜λ©΄  μ†λ„λŠ” 40%, λŠ” 30% 각각 ν–₯μƒλœλ‹€.  λ””μžμΈ μΈ‘λ©΄μ—μ„œλŠ” 과거둜 νšŒκ·€ν•  κ²ƒμ΄λΌλŠ” 전망이닀. 기기의 κ°€μž₯μžλ¦¬μ— β€˜κΉ»μžŽ ν†΅μ‘°λ¦Όβ€™μ΄λΌλŠ” 별칭을 μ–»μ—ˆλ˜ β€˜μ•„μ΄ν°4’와 β€˜μ•„μ΄ν°5’ 처럼 ν‰ν‰ν•œ κΈˆμ† ν…Œλ‘λ¦¬λ₯Ό μ μš©ν•  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. μ „μž‘μ˜ 인기 μƒ‰μƒμ΄μ—ˆλ˜ β€˜λ―Έλ“œλ‚˜μž‡ 그린’을 λŒ€μ²΄ν•  μƒ‰μƒμœΌλ‘œ 닀크 블루 색상을 μ±„νƒν•˜κ³  앑정을 λ³΄ν˜Έν•˜κΈ° μœ„ν•œ β€˜μ„ΈλΌλ―Ή μ‰΄λ“œβ€™ 코딩도 μƒˆλ‘­κ²Œ μ μš©λœλ‹€.  이밖에도 아이폰12μ—μ„œλŠ” 좩전방식이 λΌμ΄νŠΈλ‹μ—μ„œ - νƒ€μž…μœΌλ‘œ λ°”λ€Œκ³ , μ›κ°€μ ˆκ°κ³Ό ν™˜κ²½ 보호λ₯Ό μœ„ν•΄ κΈ°λ³Έ κ΅¬μ„±ν’ˆμœΌλ‘œ 제곡되던 μœ μ„ μ΄μ–΄ν°(μ΄μ–΄νŒŸ)κ³Ό μΆ©μ „κΈ°κ°€ λΉ μ§„λ‹€.  아이폰12λŠ” 미ꡭ을 ν¬ν•¨ν•œ 1μ°¨ μΆœμ‹œκ΅­μ— 이λ₯΄λ©΄ 23일께 곡식 μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ˜ˆμƒλœλ‹€. 아이폰12 ν”„λ‘œ λ§₯μŠ€λŠ” λΆ€ν’ˆ μˆ˜κΈ‰ λ“± 문제둜 11월에 λ”°λ‘œ μΆœμ‹œλ  κ°€λŠ₯성도 μžˆλ‹€. 특히 μ˜¬ν•΄λŠ” 아이폰 μ‹ μž‘μ˜ κ΅­λ‚΄ μΆœμ‹œ 일정이 획기적으둜 μ•žλ‹Ήκ²¨μ§ˆ κ²ƒμ΄λΌλŠ” μ†Œμ‹μ΄λ‹€. 첫 5폰인 만큼 세계 졜초둜 5 μ„œλΉ„μŠ€λ₯Ό μƒμš©ν™”ν•œ ꡭ내에 1μ°¨ μΆœμ‹œκ΅­μ— μ€€ν•˜λŠ” μΌμ •μœΌλ‘œ 이달 말께 μ„ λ³΄μΈλ‹€λŠ” 것이닀.  가격은 κ°€μž₯ μ €λ ΄ν•œ β€˜μ•„μ΄ν°12 λ―Έλ‹ˆβ€™ κΈ°μ€€μœΌλ‘œ 649λ‹¬λŸ¬λΆ€ν„° 749λ‹¬λŸ¬κΉŒμ§€ λ‹€μ–‘ν•œ 관츑이 λ‚˜μ˜€κ³  μžˆλŠ” 상황이닀.  μ—…κ³„μ—μ„œλŠ” 아이폰12이 아이폰 μ‚¬μš©μžλ“€μ˜ ꡐ체 μˆ˜μš”λ₯Ό μžκ·Ήν•΄ μ˜ˆλ…„λ³΄λ‹€ 많이 판맀될 κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜κ³  μžˆλ‹€. μ „ μ„Έκ³„μ—μ„œ μ‚¬μš©λ˜λŠ” 아이폰 μ•½ 9μ–΅5000λ§ŒλŒ€ 쀑 3μ–΅5000λ§ŒλŒ€κ°€ 1λ…„ μ•ˆμ— ꡐ체될 κ°€λŠ₯성이 높은 κ΅¬ν˜• μ œν’ˆμΈλ°λ‹€, μ• ν”Œμ˜ 첫 5폰이기 λ•Œλ¬Έμ΄λ‹€.  또 λ―Έκ΅­ 쀑고 νœ΄λŒ€ν° 셀셀닷컴이 λ―Έκ΅­ μ•ˆλ“œλ‘œμ΄λ“œ 슀마트폰 μ‚¬μš©μž 2000λͺ…을 λŒ€μƒμœΌλ‘œ μ‹€μ‹œν•œ 섀문쑰사에 λ”°λ₯΄λ©΄ μ‘λ‹΅μžμ˜ 33%κ°€ 아이폰12둜 ꡐ체λ₯Ό ν¬λ§ν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬λ‹€.  ν•œνŽΈ, μ• ν”Œμ€ μ˜€λŠ” 13일(ν˜„μ§€μ‹œκ°„) λ―Έκ΅­ μƒŒν”„λž€μ‹œμŠ€μ½” λ³Έμ‚¬μ—μ„œ 온라인으둜 아이폰12 곡개 행사λ₯Ό μ§„ν–‰ν•  κ³„νšμ΄λ‹€. ν–‰μ‚¬λŠ” μ• ν”Œ ν™ˆνŽ˜μ΄μ§€λ₯Ό 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ‹œμ²­ν•  수 μžˆλ‹€. μž₯μ˜μ€ (@..) \n\t \n\t"

stringr ν•¨μˆ˜

ν•¨μˆ˜ μ„€λͺ… κ²°κ³Ό
str_extract() 처음 λ§€μΉ­λ˜λŠ” λ¬Έμžμ—΄ μΆ”μΆœ Character vector
str_extract_all() 맀칭된 λͺ¨λ“  λ¬Έμžμ—΄ μΆ”μΆœ List of character vectors
str_locate() 맀칭된 첫 νŒ¨ν„΄ μœ„μΉ˜ λ°˜ν™˜ Matrix of start/end positions
str_locate_all() 맀칭된 λͺ¨λ“  νŒ¨ν„΄ μœ„μΉ˜ λ°˜ν™˜ List of matrices
str_replace() 맀칭된 첫 νŒ¨ν„΄ ꡐ체 Character vector
str_replace_all() 맀칭된 λͺ¨λ“  νŒ¨ν„΄ ꡐ체 Character vector
str_remove() 맀칭된 첫 νŒ¨ν„΄ μ‚­μ œ Character vector
str_remove_all() 맀칭된 λͺ¨λ“  νŒ¨ν„΄ μ‚­μ œ Character vector
str_split() νŒ¨ν„΄μ— 따라 λ¬Έμžμ—΄ 뢄리 List of character vectors
str_split_fixed() νŒ¨ν„΄μ— 따라 λΆ„λ¦¬λœ λ¬Έμžμ—΄μ„ μ •ν•΄μ§„ 수의 ν–‰λ ¬λ‘œ λ°˜ν™˜ Matrix of character vectors
str_detect() λ¬Έμžμ—΄μ˜ νŒ¨ν„΄ 유무 확인 Boolean vector
str_count() λ¬Έμžμ—΄μ—μ„œ 맀칭된 νŒ¨ν„΄ 갯수 λ°˜ν™˜ Numeric vector
str_sub() μœ„μΉ˜μ— λ”°λ₯Έ λ¬Έμžμ—΄ μΆ”μΆœ Character vector
str_pad() λ¬Έμžμ—΄μ— 곡백 μΆ”κ°€ Character vector
str_squish() λ¬Έμžμ—΄μ— λΆˆν•„μš”ν•œ 곡백 제거 Character vector
str_c() λ¬Έμžμ—΄ κ²°ν•© Character vector

ν•œκ΅­μ–΄ ν…μŠ€νŠΈ μ „μ²˜λ¦¬

*보편적 고렀사항: Basic-level 1) 빈칸 (white space) 2) ꡬ두점 (punctuation) 3) 숫자 (digit numbers) 4) ν•œκ΅­μ–΄ (UTF-8) μ΄μ™Έμ˜ 문자 (e.g., ASCII code)

# 1) space
content
## [1] "\n\t \n\t \n\n \n [이데일리 μž₯μ˜μ€ 기자] β€˜μ•„μ΄ν°12’(κ°€μΉ­) μ΄λ²ˆμ£Όμ— λ“œλ””μ–΄ 베일을 λ²—λŠ”λ‹€. μ˜ˆλ…„λ³΄λ‹€ 아이폰 μ‹ μž‘μ˜ 곡개 및 μΆœμ‹œ 일정이 ν•œλ‹¬ κ°€λŸ‰ λŠ¦μ–΄μ§€λ©΄μ„œ β€˜μ• ν”Œ νŒ¬β€™λ“€μ˜ κΈ°λŒ€κ°μ€ 더 λ†’μ•„μ Έ μžˆλŠ” μƒνƒœλ‹€.  아이폰 12 μ‹œλ¦¬μ¦ˆλŠ” △아이폰12 λ―Έλ‹ˆ(5.4인치) △아이폰12(6.1인치) △아이폰12 ν”„λ‘œ(6.1인치) △아이폰12 ν”„λ‘œ λ§₯슀(6.7인치) λ“± 4μ’…μœΌλ‘œ μΆœμ‹œλ  μ˜ˆμ •μ΄λ‹€. μ—­λŒ€ 라인업 쀑 κ°€μž₯ λ§Žμ€ λͺ¨λΈλ‘œ κ΅¬μ„±λœλ‹€.  μš°μ„  κ°€μž₯ 크게 μ£Όλͺ©μ„ λ°›κ³  μžˆλŠ” 뢀뢄은 μ• ν”Œμ˜ 첫번째 5Gν°μ΄λΌλŠ” 점이닀. μ‚Όμ„±μ „μž(005930)κ°€ 세계 졜초 5G폰인 β€˜κ°€λŸ­μ‹œS10’을 μΆœμ‹œν•œμ§€ 1λ…„ 7κ°œμ›”λ§Œμ΄λ‹€. κ·Έλ™μ•ˆ μ—…κ³„μ—μ„œλŠ” β€˜μ™„λ²½ν•˜μ§€ μ•ŠμœΌλ©΄ λ‚΄μ§€ μ•ŠλŠ”λ‹€β€™λŠ” μ• ν”Œμ˜ μ² ν•™ λ•Œλ¬Έμ— 5G폰 μΆœμ‹œκ°€ λŠ¦μ–΄μ§€λŠ” κ²ƒμ΄λΌλŠ” 해석도 λ‚˜μ™”λ‹€.  ꡭ내에 μΆœμ‹œλ˜λŠ” 아이폰12 μ‹œλ¦¬μ¦ˆλŠ” 4μ’… λͺ¨λ‘ 6κΈ°κ°€ν—€λ₯΄μΈ (GHz) λŒ€μ—­ μ΄ν•˜(μ„œλΈŒ6) 5G λͺ¨λΈλ‘œ μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. λ‹€λ§Œ, μ΅œμƒμœ„ λͺ¨λΈμΈ β€˜μ•„μ΄ν°12 ν”„λ‘œ λ§₯μŠ€β€™μ˜ λ―Έκ΅­ μΆœμ‹œ λͺ¨λΈμ—λŠ” 28Ghz의 초고주파(mmWave) λŒ€μ—­ μ•ˆν…Œλ‚˜κ°€ νƒ‘μž¬λ  κ²ƒμ΄λž€ 전망이 λ‚˜μ˜¨λ‹€. 배터리 절감 μ°¨μ›μ—μ„œ 4G와 5Gλ₯Ό 선택할 수 μžˆλŠ” 슀마트 데이터λͺ¨λ“œκ°€ λ„μž…λœλ‹€.  μ• ν”Œμ˜ μ΅œμ‹ ν˜• μΉ©μ…‹ β€˜A14 λ°”μ΄μ˜€λ‹‰β€™μ΄ 보여쀄 κ°•λ ₯ν•œ μ„±λŠ₯에도 이λͺ©μ΄ 쏠린닀. μ• ν”Œμ€ 자체 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œμ„Έμ„œ(AP)의 μ„±λŠ₯이 동급 μ΅œκ°•μ΄λΌλŠ” μžλΆ€ν•˜κ³  μžˆλ‹€.  μ• ν”Œ 졜초둜 β€˜5λ‚˜λ…Έλ―Έν„°β€™ 곡정 기술이 적용된 A14λŠ” A13보닀 μ€‘μ•™μ²˜λ¦¬μž₯치(CPU)와 κ·Έλž˜ν”½μ²˜λ¦¬μž₯치(GPU)의 속도λ₯Ό 각각 16%, 8.3% ν–₯μƒμ‹œν‚¬ κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜κ³  μžˆλ‹€. A12와 λΉ„κ΅ν•˜λ©΄ CPU μ†λ„λŠ” 40%, GPUλŠ” 30% 각각 ν–₯μƒλœλ‹€.  λ””μžμΈ μΈ‘λ©΄μ—μ„œλŠ” 과거둜 νšŒκ·€ν•  κ²ƒμ΄λΌλŠ” 전망이닀. 기기의 κ°€μž₯μžλ¦¬μ— β€˜κΉ»μžŽ ν†΅μ‘°λ¦Όβ€™μ΄λΌλŠ” 별칭을 μ–»μ—ˆλ˜ β€˜μ•„μ΄ν°4’와 β€˜μ•„μ΄ν°5’ 처럼 ν‰ν‰ν•œ κΈˆμ† ν…Œλ‘λ¦¬λ₯Ό μ μš©ν•  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. μ „μž‘μ˜ 인기 μƒ‰μƒμ΄μ—ˆλ˜ β€˜λ―Έλ“œλ‚˜μž‡ 그린’을 λŒ€μ²΄ν•  μƒ‰μƒμœΌλ‘œ 닀크 블루 색상을 μ±„νƒν•˜κ³  앑정을 λ³΄ν˜Έν•˜κΈ° μœ„ν•œ β€˜μ„ΈλΌλ―Ή μ‰΄λ“œβ€™ 코딩도 μƒˆλ‘­κ²Œ μ μš©λœλ‹€.  이밖에도 아이폰12μ—μ„œλŠ” 좩전방식이 λΌμ΄νŠΈλ‹μ—μ„œ USB-C νƒ€μž…μœΌλ‘œ λ°”λ€Œκ³ , μ›κ°€μ ˆκ°κ³Ό ν™˜κ²½ 보호λ₯Ό μœ„ν•΄ κΈ°λ³Έ κ΅¬μ„±ν’ˆμœΌλ‘œ 제곡되던 μœ μ„ μ΄μ–΄ν°(μ΄μ–΄νŒŸ)κ³Ό μΆ©μ „κΈ°κ°€ λΉ μ§„λ‹€.  아이폰12λŠ” 미ꡭ을 ν¬ν•¨ν•œ 1μ°¨ μΆœμ‹œκ΅­μ— 이λ₯΄λ©΄ 23일께 곡식 μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ˜ˆμƒλœλ‹€. 아이폰12 ν”„λ‘œ λ§₯μŠ€λŠ” λΆ€ν’ˆ μˆ˜κΈ‰ λ“± 문제둜 11월에 λ”°λ‘œ μΆœμ‹œλ  κ°€λŠ₯성도 μžˆλ‹€. 특히 μ˜¬ν•΄λŠ” 아이폰 μ‹ μž‘μ˜ κ΅­λ‚΄ μΆœμ‹œ 일정이 획기적으둜 μ•žλ‹Ήκ²¨μ§ˆ κ²ƒμ΄λΌλŠ” μ†Œμ‹μ΄λ‹€. 첫 5G폰인 만큼 세계 졜초둜 5G μ„œλΉ„μŠ€λ₯Ό μƒμš©ν™”ν•œ ꡭ내에 1μ°¨ μΆœμ‹œκ΅­μ— μ€€ν•˜λŠ” μΌμ •μœΌλ‘œ 이달 말께 μ„ λ³΄μΈλ‹€λŠ” 것이닀.  가격은 κ°€μž₯ μ €λ ΄ν•œ β€˜μ•„μ΄ν°12 λ―Έλ‹ˆβ€™ κΈ°μ€€μœΌλ‘œ 649λ‹¬λŸ¬λΆ€ν„° 749λ‹¬λŸ¬κΉŒμ§€ λ‹€μ–‘ν•œ 관츑이 λ‚˜μ˜€κ³  μžˆλŠ” 상황이닀.  μ—…κ³„μ—μ„œλŠ” 아이폰12이 아이폰 μ‚¬μš©μžλ“€μ˜ ꡐ체 μˆ˜μš”λ₯Ό μžκ·Ήν•΄ μ˜ˆλ…„λ³΄λ‹€ 많이 판맀될 κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜κ³  μžˆλ‹€. μ „ μ„Έκ³„μ—μ„œ μ‚¬μš©λ˜λŠ” 아이폰 μ•½ 9μ–΅5000λ§ŒλŒ€ 쀑 3μ–΅5000λ§ŒλŒ€κ°€ 1λ…„ μ•ˆμ— ꡐ체될 κ°€λŠ₯성이 높은 κ΅¬ν˜• μ œν’ˆμΈλ°λ‹€, μ• ν”Œμ˜ 첫 5G폰이기 λ•Œλ¬Έμ΄λ‹€.  또 λ―Έκ΅­ 쀑고 νœ΄λŒ€ν° 셀셀닷컴이 λ―Έκ΅­ μ•ˆλ“œλ‘œμ΄λ“œ 슀마트폰 μ‚¬μš©μž 2000λͺ…을 λŒ€μƒμœΌλ‘œ μ‹€μ‹œν•œ 섀문쑰사에 λ”°λ₯΄λ©΄ μ‘λ‹΅μžμ˜ 33%κ°€ 아이폰12둜 ꡐ체λ₯Ό ν¬λ§ν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬λ‹€.  ν•œνŽΈ, μ• ν”Œμ€ μ˜€λŠ” 13일(ν˜„μ§€μ‹œκ°„) λ―Έκ΅­ μƒŒν”„λž€μ‹œμŠ€μ½” λ³Έμ‚¬μ—μ„œ 온라인으둜 아이폰12 곡개 행사λ₯Ό μ§„ν–‰ν•  κ³„νšμ΄λ‹€. ν–‰μ‚¬λŠ” μ• ν”Œ ν™ˆνŽ˜μ΄μ§€λ₯Ό 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ‹œμ²­ν•  수 μžˆλ‹€. μž₯μ˜μ€ (bluerain@edaily.co.kr) \n\t \n\t"
str_squish(content) 
## [1] "[이데일리 μž₯μ˜μ€ 기자] β€˜μ•„μ΄ν°12’(κ°€μΉ­) μ΄λ²ˆμ£Όμ— λ“œλ””μ–΄ 베일을 λ²—λŠ”λ‹€. μ˜ˆλ…„λ³΄λ‹€ 아이폰 μ‹ μž‘μ˜ 곡개 및 μΆœμ‹œ 일정이 ν•œλ‹¬ κ°€λŸ‰ λŠ¦μ–΄μ§€λ©΄μ„œ β€˜μ• ν”Œ νŒ¬β€™λ“€μ˜ κΈ°λŒ€κ°μ€ 더 λ†’μ•„μ Έ μžˆλŠ” μƒνƒœλ‹€. 아이폰 12 μ‹œλ¦¬μ¦ˆλŠ” △아이폰12 λ―Έλ‹ˆ(5.4인치) △아이폰12(6.1인치) △아이폰12 ν”„λ‘œ(6.1인치) △아이폰12 ν”„λ‘œ λ§₯슀(6.7인치) λ“± 4μ’…μœΌλ‘œ μΆœμ‹œλ  μ˜ˆμ •μ΄λ‹€. μ—­λŒ€ 라인업 쀑 κ°€μž₯ λ§Žμ€ λͺ¨λΈλ‘œ κ΅¬μ„±λœλ‹€. μš°μ„  κ°€μž₯ 크게 μ£Όλͺ©μ„ λ°›κ³  μžˆλŠ” 뢀뢄은 μ• ν”Œμ˜ 첫번째 5Gν°μ΄λΌλŠ” 점이닀. μ‚Όμ„±μ „μž(005930)κ°€ 세계 졜초 5G폰인 β€˜κ°€λŸ­μ‹œS10’을 μΆœμ‹œν•œμ§€ 1λ…„ 7κ°œμ›”λ§Œμ΄λ‹€. κ·Έλ™μ•ˆ μ—…κ³„μ—μ„œλŠ” β€˜μ™„λ²½ν•˜μ§€ μ•ŠμœΌλ©΄ λ‚΄μ§€ μ•ŠλŠ”λ‹€β€™λŠ” μ• ν”Œμ˜ μ² ν•™ λ•Œλ¬Έμ— 5G폰 μΆœμ‹œκ°€ λŠ¦μ–΄μ§€λŠ” κ²ƒμ΄λΌλŠ” 해석도 λ‚˜μ™”λ‹€. ꡭ내에 μΆœμ‹œλ˜λŠ” 아이폰12 μ‹œλ¦¬μ¦ˆλŠ” 4μ’… λͺ¨λ‘ 6κΈ°κ°€ν—€λ₯΄μΈ (GHz) λŒ€μ—­ μ΄ν•˜(μ„œλΈŒ6) 5G λͺ¨λΈλ‘œ μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. λ‹€λ§Œ, μ΅œμƒμœ„ λͺ¨λΈμΈ β€˜μ•„μ΄ν°12 ν”„λ‘œ λ§₯μŠ€β€™μ˜ λ―Έκ΅­ μΆœμ‹œ λͺ¨λΈμ—λŠ” 28Ghz의 초고주파(mmWave) λŒ€μ—­ μ•ˆν…Œλ‚˜κ°€ νƒ‘μž¬λ  κ²ƒμ΄λž€ 전망이 λ‚˜μ˜¨λ‹€. 배터리 절감 μ°¨μ›μ—μ„œ 4G와 5Gλ₯Ό 선택할 수 μžˆλŠ” 슀마트 데이터λͺ¨λ“œκ°€ λ„μž…λœλ‹€. μ• ν”Œμ˜ μ΅œμ‹ ν˜• μΉ©μ…‹ β€˜A14 λ°”μ΄μ˜€λ‹‰β€™μ΄ 보여쀄 κ°•λ ₯ν•œ μ„±λŠ₯에도 이λͺ©μ΄ 쏠린닀. μ• ν”Œμ€ 자체 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œμ„Έμ„œ(AP)의 μ„±λŠ₯이 동급 μ΅œκ°•μ΄λΌλŠ” μžλΆ€ν•˜κ³  μžˆλ‹€. μ• ν”Œ 졜초둜 β€˜5λ‚˜λ…Έλ―Έν„°β€™ 곡정 기술이 적용된 A14λŠ” A13보닀 μ€‘μ•™μ²˜λ¦¬μž₯치(CPU)와 κ·Έλž˜ν”½μ²˜λ¦¬μž₯치(GPU)의 속도λ₯Ό 각각 16%, 8.3% ν–₯μƒμ‹œν‚¬ κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜κ³  μžˆλ‹€. A12와 λΉ„κ΅ν•˜λ©΄ CPU μ†λ„λŠ” 40%, GPUλŠ” 30% 각각 ν–₯μƒλœλ‹€. λ””μžμΈ μΈ‘λ©΄μ—μ„œλŠ” 과거둜 νšŒκ·€ν•  κ²ƒμ΄λΌλŠ” 전망이닀. 기기의 κ°€μž₯μžλ¦¬μ— β€˜κΉ»μžŽ ν†΅μ‘°λ¦Όβ€™μ΄λΌλŠ” 별칭을 μ–»μ—ˆλ˜ β€˜μ•„μ΄ν°4’와 β€˜μ•„μ΄ν°5’ 처럼 ν‰ν‰ν•œ κΈˆμ† ν…Œλ‘λ¦¬λ₯Ό μ μš©ν•  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€. μ „μž‘μ˜ 인기 μƒ‰μƒμ΄μ—ˆλ˜ β€˜λ―Έλ“œλ‚˜μž‡ 그린’을 λŒ€μ²΄ν•  μƒ‰μƒμœΌλ‘œ 닀크 블루 색상을 μ±„νƒν•˜κ³  앑정을 λ³΄ν˜Έν•˜κΈ° μœ„ν•œ β€˜μ„ΈλΌλ―Ή μ‰΄λ“œβ€™ 코딩도 μƒˆλ‘­κ²Œ μ μš©λœλ‹€. 이밖에도 아이폰12μ—μ„œλŠ” 좩전방식이 λΌμ΄νŠΈλ‹μ—μ„œ USB-C νƒ€μž…μœΌλ‘œ λ°”λ€Œκ³ , μ›κ°€μ ˆκ°κ³Ό ν™˜κ²½ 보호λ₯Ό μœ„ν•΄ κΈ°λ³Έ κ΅¬μ„±ν’ˆμœΌλ‘œ 제곡되던 μœ μ„ μ΄μ–΄ν°(μ΄μ–΄νŒŸ)κ³Ό μΆ©μ „κΈ°κ°€ λΉ μ§„λ‹€. 아이폰12λŠ” 미ꡭ을 ν¬ν•¨ν•œ 1μ°¨ μΆœμ‹œκ΅­μ— 이λ₯΄λ©΄ 23일께 곡식 μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ˜ˆμƒλœλ‹€. 아이폰12 ν”„λ‘œ λ§₯μŠ€λŠ” λΆ€ν’ˆ μˆ˜κΈ‰ λ“± 문제둜 11월에 λ”°λ‘œ μΆœμ‹œλ  κ°€λŠ₯성도 μžˆλ‹€. 특히 μ˜¬ν•΄λŠ” 아이폰 μ‹ μž‘μ˜ κ΅­λ‚΄ μΆœμ‹œ 일정이 획기적으둜 μ•žλ‹Ήκ²¨μ§ˆ κ²ƒμ΄λΌλŠ” μ†Œμ‹μ΄λ‹€. 첫 5G폰인 만큼 세계 졜초둜 5G μ„œλΉ„μŠ€λ₯Ό μƒμš©ν™”ν•œ ꡭ내에 1μ°¨ μΆœμ‹œκ΅­μ— μ€€ν•˜λŠ” μΌμ •μœΌλ‘œ 이달 말께 μ„ λ³΄μΈλ‹€λŠ” 것이닀. 가격은 κ°€μž₯ μ €λ ΄ν•œ β€˜μ•„μ΄ν°12 λ―Έλ‹ˆβ€™ κΈ°μ€€μœΌλ‘œ 649λ‹¬λŸ¬λΆ€ν„° 749λ‹¬λŸ¬κΉŒμ§€ λ‹€μ–‘ν•œ 관츑이 λ‚˜μ˜€κ³  μžˆλŠ” 상황이닀. μ—…κ³„μ—μ„œλŠ” 아이폰12이 아이폰 μ‚¬μš©μžλ“€μ˜ ꡐ체 μˆ˜μš”λ₯Ό μžκ·Ήν•΄ μ˜ˆλ…„λ³΄λ‹€ 많이 판맀될 κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜κ³  μžˆλ‹€. μ „ μ„Έκ³„μ—μ„œ μ‚¬μš©λ˜λŠ” 아이폰 μ•½ 9μ–΅5000λ§ŒλŒ€ 쀑 3μ–΅5000λ§ŒλŒ€κ°€ 1λ…„ μ•ˆμ— ꡐ체될 κ°€λŠ₯성이 높은 κ΅¬ν˜• μ œν’ˆμΈλ°λ‹€, μ• ν”Œμ˜ 첫 5G폰이기 λ•Œλ¬Έμ΄λ‹€. 또 λ―Έκ΅­ 쀑고 νœ΄λŒ€ν° 셀셀닷컴이 λ―Έκ΅­ μ•ˆλ“œλ‘œμ΄λ“œ 슀마트폰 μ‚¬μš©μž 2000λͺ…을 λŒ€μƒμœΌλ‘œ μ‹€μ‹œν•œ 섀문쑰사에 λ”°λ₯΄λ©΄ μ‘λ‹΅μžμ˜ 33%κ°€ 아이폰12둜 ꡐ체λ₯Ό ν¬λ§ν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬λ‹€. ν•œνŽΈ, μ• ν”Œμ€ μ˜€λŠ” 13일(ν˜„μ§€μ‹œκ°„) λ―Έκ΅­ μƒŒν”„λž€μ‹œμŠ€μ½” λ³Έμ‚¬μ—μ„œ 온라인으둜 아이폰12 곡개 행사λ₯Ό μ§„ν–‰ν•  κ³„νšμ΄λ‹€. ν–‰μ‚¬λŠ” μ• ν”Œ ν™ˆνŽ˜μ΄μ§€λ₯Ό 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ‹œμ²­ν•  수 μžˆλ‹€. μž₯μ˜μ€ (bluerain@edaily.co.kr)"
# 2) punctuation
str_replace_all(content, "[[:punct:]]+", " ") 
## [1] "\n\t \n\t \n\n \n  이데일리 μž₯μ˜μ€ 기자   아이폰12 κ°€μΉ­  μ΄λ²ˆμ£Όμ— λ“œλ””μ–΄ 베일을 λ²—λŠ”λ‹€  μ˜ˆλ…„λ³΄λ‹€ 아이폰 μ‹ μž‘μ˜ 곡개 및 μΆœμ‹œ 일정이 ν•œλ‹¬ κ°€λŸ‰ λŠ¦μ–΄μ§€λ©΄μ„œ  μ• ν”Œ 팬 λ“€μ˜ κΈ°λŒ€κ°μ€ 더 λ†’μ•„μ Έ μžˆλŠ” μƒνƒœλ‹€   아이폰 12 μ‹œλ¦¬μ¦ˆλŠ” △아이폰12 λ―Έλ‹ˆ 5 4인치  △아이폰12 6 1인치  △아이폰12 ν”„λ‘œ 6 1인치  △아이폰12 ν”„λ‘œ λ§₯슀 6 7인치  λ“± 4μ’…μœΌλ‘œ μΆœμ‹œλ  μ˜ˆμ •μ΄λ‹€  μ—­λŒ€ 라인업 쀑 κ°€μž₯ λ§Žμ€ λͺ¨λΈλ‘œ κ΅¬μ„±λœλ‹€   μš°μ„  κ°€μž₯ 크게 μ£Όλͺ©μ„ λ°›κ³  μžˆλŠ” 뢀뢄은 μ• ν”Œμ˜ 첫번째 5Gν°μ΄λΌλŠ” 점이닀  μ‚Όμ„±μ „μž 005930 κ°€ 세계 졜초 5G폰인  κ°€λŸ­μ‹œS10 을 μΆœμ‹œν•œμ§€ 1λ…„ 7κ°œμ›”λ§Œμ΄λ‹€  κ·Έλ™μ•ˆ μ—…κ³„μ—μ„œλŠ”  μ™„λ²½ν•˜μ§€ μ•ŠμœΌλ©΄ λ‚΄μ§€ μ•ŠλŠ”λ‹€ λŠ” μ• ν”Œμ˜ μ² ν•™ λ•Œλ¬Έμ— 5G폰 μΆœμ‹œκ°€ λŠ¦μ–΄μ§€λŠ” κ²ƒμ΄λΌλŠ” 해석도 λ‚˜μ™”λ‹€   ꡭ내에 μΆœμ‹œλ˜λŠ” 아이폰12 μ‹œλ¦¬μ¦ˆλŠ” 4μ’… λͺ¨λ‘ 6κΈ°κ°€ν—€λ₯΄μΈ  GHz  λŒ€μ—­ μ΄ν•˜ μ„œλΈŒ6  5G λͺ¨λΈλ‘œ μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€  λ‹€λ§Œ  μ΅œμƒμœ„ λͺ¨λΈμΈ  아이폰12 ν”„λ‘œ λ§₯슀 의 λ―Έκ΅­ μΆœμ‹œ λͺ¨λΈμ—λŠ” 28Ghz의 초고주파 mmWave  λŒ€μ—­ μ•ˆν…Œλ‚˜κ°€ νƒ‘μž¬λ  κ²ƒμ΄λž€ 전망이 λ‚˜μ˜¨λ‹€  배터리 절감 μ°¨μ›μ—μ„œ 4G와 5Gλ₯Ό 선택할 수 μžˆλŠ” 슀마트 데이터λͺ¨λ“œκ°€ λ„μž…λœλ‹€   μ• ν”Œμ˜ μ΅œμ‹ ν˜• μΉ©μ…‹  A14 λ°”μ΄μ˜€λ‹‰ 이 보여쀄 κ°•λ ₯ν•œ μ„±λŠ₯에도 이λͺ©μ΄ 쏠린닀  μ• ν”Œμ€ 자체 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œμ„Έμ„œ AP 의 μ„±λŠ₯이 동급 μ΅œκ°•μ΄λΌλŠ” μžλΆ€ν•˜κ³  μžˆλ‹€   μ• ν”Œ 졜초둜  5λ‚˜λ…Έλ―Έν„°  곡정 기술이 적용된 A14λŠ” A13보닀 μ€‘μ•™μ²˜λ¦¬μž₯치 CPU 와 κ·Έλž˜ν”½μ²˜λ¦¬μž₯치 GPU 의 속도λ₯Ό 각각 16  8 3  ν–₯μƒμ‹œν‚¬ κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜κ³  μžˆλ‹€  A12와 λΉ„κ΅ν•˜λ©΄ CPU μ†λ„λŠ” 40  GPUλŠ” 30  각각 ν–₯μƒλœλ‹€   λ””μžμΈ μΈ‘λ©΄μ—μ„œλŠ” 과거둜 νšŒκ·€ν•  κ²ƒμ΄λΌλŠ” 전망이닀  기기의 κ°€μž₯μžλ¦¬μ—  깻잎 톡쑰림 μ΄λΌλŠ” 별칭을 μ–»μ—ˆλ˜  아이폰4 와  아이폰5  처럼 ν‰ν‰ν•œ κΈˆμ† ν…Œλ‘λ¦¬λ₯Ό μ μš©ν•  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€  μ „μž‘μ˜ 인기 μƒ‰μƒμ΄μ—ˆλ˜  λ―Έλ“œλ‚˜μž‡ κ·Έλ¦° 을 λŒ€μ²΄ν•  μƒ‰μƒμœΌλ‘œ 닀크 블루 색상을 μ±„νƒν•˜κ³  앑정을 λ³΄ν˜Έν•˜κΈ° μœ„ν•œ  세라믹 μ‰΄λ“œ  코딩도 μƒˆλ‘­κ²Œ μ μš©λœλ‹€   이밖에도 아이폰12μ—μ„œλŠ” 좩전방식이 λΌμ΄νŠΈλ‹μ—μ„œ USB C νƒ€μž…μœΌλ‘œ λ°”λ€Œκ³   μ›κ°€μ ˆκ°κ³Ό ν™˜κ²½ 보호λ₯Ό μœ„ν•΄ κΈ°λ³Έ κ΅¬μ„±ν’ˆμœΌλ‘œ 제곡되던 μœ μ„ μ΄μ–΄ν° μ΄μ–΄νŒŸ κ³Ό μΆ©μ „κΈ°κ°€ λΉ μ§„λ‹€   아이폰12λŠ” 미ꡭ을 ν¬ν•¨ν•œ 1μ°¨ μΆœμ‹œκ΅­μ— 이λ₯΄λ©΄ 23일께 곡식 μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ˜ˆμƒλœλ‹€  아이폰12 ν”„λ‘œ λ§₯μŠ€λŠ” λΆ€ν’ˆ μˆ˜κΈ‰ λ“± 문제둜 11월에 λ”°λ‘œ μΆœμ‹œλ  κ°€λŠ₯성도 μžˆλ‹€  특히 μ˜¬ν•΄λŠ” 아이폰 μ‹ μž‘μ˜ κ΅­λ‚΄ μΆœμ‹œ 일정이 획기적으둜 μ•žλ‹Ήκ²¨μ§ˆ κ²ƒμ΄λΌλŠ” μ†Œμ‹μ΄λ‹€  첫 5G폰인 만큼 세계 졜초둜 5G μ„œλΉ„μŠ€λ₯Ό μƒμš©ν™”ν•œ ꡭ내에 1μ°¨ μΆœμ‹œκ΅­μ— μ€€ν•˜λŠ” μΌμ •μœΌλ‘œ 이달 말께 μ„ λ³΄μΈλ‹€λŠ” 것이닀   가격은 κ°€μž₯ μ €λ ΄ν•œ  아이폰12 λ―Έλ‹ˆ  κΈ°μ€€μœΌλ‘œ 649λ‹¬λŸ¬λΆ€ν„° 749λ‹¬λŸ¬κΉŒμ§€ λ‹€μ–‘ν•œ 관츑이 λ‚˜μ˜€κ³  μžˆλŠ” 상황이닀   μ—…κ³„μ—μ„œλŠ” 아이폰12이 아이폰 μ‚¬μš©μžλ“€μ˜ ꡐ체 μˆ˜μš”λ₯Ό μžκ·Ήν•΄ μ˜ˆλ…„λ³΄λ‹€ 많이 판맀될 κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜κ³  μžˆλ‹€  μ „ μ„Έκ³„μ—μ„œ μ‚¬μš©λ˜λŠ” 아이폰 μ•½ 9μ–΅5000λ§ŒλŒ€ 쀑 3μ–΅5000λ§ŒλŒ€κ°€ 1λ…„ μ•ˆμ— ꡐ체될 κ°€λŠ₯성이 높은 κ΅¬ν˜• μ œν’ˆμΈλ°λ‹€  μ• ν”Œμ˜ 첫 5G폰이기 λ•Œλ¬Έμ΄λ‹€   또 λ―Έκ΅­ 쀑고 νœ΄λŒ€ν° 셀셀닷컴이 λ―Έκ΅­ μ•ˆλ“œλ‘œμ΄λ“œ 슀마트폰 μ‚¬μš©μž 2000λͺ…을 λŒ€μƒμœΌλ‘œ μ‹€μ‹œν•œ 섀문쑰사에 λ”°λ₯΄λ©΄ μ‘λ‹΅μžμ˜ 33 κ°€ 아이폰12둜 ꡐ체λ₯Ό ν¬λ§ν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬λ‹€   ν•œνŽΈ  μ• ν”Œμ€ μ˜€λŠ” 13일 ν˜„μ§€μ‹œκ°„  λ―Έκ΅­ μƒŒν”„λž€μ‹œμŠ€μ½” λ³Έμ‚¬μ—μ„œ 온라인으둜 아이폰12 곡개 행사λ₯Ό μ§„ν–‰ν•  κ³„νšμ΄λ‹€  ν–‰μ‚¬λŠ” μ• ν”Œ ν™ˆνŽ˜μ΄μ§€λ₯Ό 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ‹œμ²­ν•  수 μžˆλ‹€  μž₯μ˜μ€  bluerain edaily co kr  \n\t \n\t"
str_replace_all(content, "[^[:word:]#@]+", " ") 
## [1] " 이데일리 μž₯μ˜μ€ 기자 아이폰12 κ°€μΉ­ μ΄λ²ˆμ£Όμ— λ“œλ””μ–΄ 베일을 λ²—λŠ”λ‹€ μ˜ˆλ…„λ³΄λ‹€ 아이폰 μ‹ μž‘μ˜ 곡개 및 μΆœμ‹œ 일정이 ν•œλ‹¬ κ°€λŸ‰ λŠ¦μ–΄μ§€λ©΄μ„œ μ• ν”Œ 팬 λ“€μ˜ κΈ°λŒ€κ°μ€ 더 λ†’μ•„μ Έ μžˆλŠ” μƒνƒœλ‹€ 아이폰 12 μ‹œλ¦¬μ¦ˆλŠ” 아이폰12 λ―Έλ‹ˆ 5 4인치 아이폰12 6 1인치 아이폰12 ν”„λ‘œ 6 1인치 아이폰12 ν”„λ‘œ λ§₯슀 6 7인치 λ“± 4μ’…μœΌλ‘œ μΆœμ‹œλ  μ˜ˆμ •μ΄λ‹€ μ—­λŒ€ 라인업 쀑 κ°€μž₯ λ§Žμ€ λͺ¨λΈλ‘œ κ΅¬μ„±λœλ‹€ μš°μ„  κ°€μž₯ 크게 μ£Όλͺ©μ„ λ°›κ³  μžˆλŠ” 뢀뢄은 μ• ν”Œμ˜ 첫번째 5Gν°μ΄λΌλŠ” 점이닀 μ‚Όμ„±μ „μž 005930 κ°€ 세계 졜초 5G폰인 κ°€λŸ­μ‹œS10 을 μΆœμ‹œν•œμ§€ 1λ…„ 7κ°œμ›”λ§Œμ΄λ‹€ κ·Έλ™μ•ˆ μ—…κ³„μ—μ„œλŠ” μ™„λ²½ν•˜μ§€ μ•ŠμœΌλ©΄ λ‚΄μ§€ μ•ŠλŠ”λ‹€ λŠ” μ• ν”Œμ˜ μ² ν•™ λ•Œλ¬Έμ— 5G폰 μΆœμ‹œκ°€ λŠ¦μ–΄μ§€λŠ” κ²ƒμ΄λΌλŠ” 해석도 λ‚˜μ™”λ‹€ ꡭ내에 μΆœμ‹œλ˜λŠ” 아이폰12 μ‹œλ¦¬μ¦ˆλŠ” 4μ’… λͺ¨λ‘ 6κΈ°κ°€ν—€λ₯΄μΈ  GHz λŒ€μ—­ μ΄ν•˜ μ„œλΈŒ6 5G λͺ¨λΈλ‘œ μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€ λ‹€λ§Œ μ΅œμƒμœ„ λͺ¨λΈμΈ 아이폰12 ν”„λ‘œ λ§₯슀 의 λ―Έκ΅­ μΆœμ‹œ λͺ¨λΈμ—λŠ” 28Ghz의 초고주파 mmWave λŒ€μ—­ μ•ˆν…Œλ‚˜κ°€ νƒ‘μž¬λ  κ²ƒμ΄λž€ 전망이 λ‚˜μ˜¨λ‹€ 배터리 절감 μ°¨μ›μ—μ„œ 4G와 5Gλ₯Ό 선택할 수 μžˆλŠ” 슀마트 데이터λͺ¨λ“œκ°€ λ„μž…λœλ‹€ μ• ν”Œμ˜ μ΅œμ‹ ν˜• μΉ©μ…‹ A14 λ°”μ΄μ˜€λ‹‰ 이 보여쀄 κ°•λ ₯ν•œ μ„±λŠ₯에도 이λͺ©μ΄ 쏠린닀 μ• ν”Œμ€ 자체 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œμ„Έμ„œ AP 의 μ„±λŠ₯이 동급 μ΅œκ°•μ΄λΌλŠ” μžλΆ€ν•˜κ³  μžˆλ‹€ μ• ν”Œ 졜초둜 5λ‚˜λ…Έλ―Έν„° 곡정 기술이 적용된 A14λŠ” A13보닀 μ€‘μ•™μ²˜λ¦¬μž₯치 CPU 와 κ·Έλž˜ν”½μ²˜λ¦¬μž₯치 GPU 의 속도λ₯Ό 각각 16 8 3 ν–₯μƒμ‹œν‚¬ κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜κ³  μžˆλ‹€ A12와 λΉ„κ΅ν•˜λ©΄ CPU μ†λ„λŠ” 40 GPUλŠ” 30 각각 ν–₯μƒλœλ‹€ λ””μžμΈ μΈ‘λ©΄μ—μ„œλŠ” 과거둜 νšŒκ·€ν•  κ²ƒμ΄λΌλŠ” 전망이닀 기기의 κ°€μž₯μžλ¦¬μ— 깻잎 톡쑰림 μ΄λΌλŠ” 별칭을 μ–»μ—ˆλ˜ 아이폰4 와 아이폰5 처럼 ν‰ν‰ν•œ κΈˆμ† ν…Œλ‘λ¦¬λ₯Ό μ μš©ν•  κ²ƒμœΌλ‘œ μ•Œλ €μ‘Œλ‹€ μ „μž‘μ˜ 인기 μƒ‰μƒμ΄μ—ˆλ˜ λ―Έλ“œλ‚˜μž‡ κ·Έλ¦° 을 λŒ€μ²΄ν•  μƒ‰μƒμœΌλ‘œ 닀크 블루 색상을 μ±„νƒν•˜κ³  앑정을 λ³΄ν˜Έν•˜κΈ° μœ„ν•œ 세라믹 μ‰΄λ“œ 코딩도 μƒˆλ‘­κ²Œ μ μš©λœλ‹€ 이밖에도 아이폰12μ—μ„œλŠ” 좩전방식이 λΌμ΄νŠΈλ‹μ—μ„œ USB C νƒ€μž…μœΌλ‘œ λ°”λ€Œκ³  μ›κ°€μ ˆκ°κ³Ό ν™˜κ²½ 보호λ₯Ό μœ„ν•΄ κΈ°λ³Έ κ΅¬μ„±ν’ˆμœΌλ‘œ 제곡되던 μœ μ„ μ΄μ–΄ν° μ΄μ–΄νŒŸ κ³Ό μΆ©μ „κΈ°κ°€ λΉ μ§„λ‹€ 아이폰12λŠ” 미ꡭ을 ν¬ν•¨ν•œ 1μ°¨ μΆœμ‹œκ΅­μ— 이λ₯΄λ©΄ 23일께 곡식 μΆœμ‹œλ  κ²ƒμœΌλ‘œ μ˜ˆμƒλœλ‹€ 아이폰12 ν”„λ‘œ λ§₯μŠ€λŠ” λΆ€ν’ˆ μˆ˜κΈ‰ λ“± 문제둜 11월에 λ”°λ‘œ μΆœμ‹œλ  κ°€λŠ₯성도 μžˆλ‹€ 특히 μ˜¬ν•΄λŠ” 아이폰 μ‹ μž‘μ˜ κ΅­λ‚΄ μΆœμ‹œ 일정이 획기적으둜 μ•žλ‹Ήκ²¨μ§ˆ κ²ƒμ΄λΌλŠ” μ†Œμ‹μ΄λ‹€ 첫 5G폰인 만큼 세계 졜초둜 5G μ„œλΉ„μŠ€λ₯Ό μƒμš©ν™”ν•œ ꡭ내에 1μ°¨ μΆœμ‹œκ΅­μ— μ€€ν•˜λŠ” μΌμ •μœΌλ‘œ 이달 말께 μ„ λ³΄μΈλ‹€λŠ” 것이닀 가격은 κ°€μž₯ μ €λ ΄ν•œ 아이폰12 λ―Έλ‹ˆ κΈ°μ€€μœΌλ‘œ 649λ‹¬λŸ¬λΆ€ν„° 749λ‹¬λŸ¬κΉŒμ§€ λ‹€μ–‘ν•œ 관츑이 λ‚˜μ˜€κ³  μžˆλŠ” 상황이닀 μ—…κ³„μ—μ„œλŠ” 아이폰12이 아이폰 μ‚¬μš©μžλ“€μ˜ ꡐ체 μˆ˜μš”λ₯Ό μžκ·Ήν•΄ μ˜ˆλ…„λ³΄λ‹€ 많이 판맀될 κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜κ³  μžˆλ‹€ μ „ μ„Έκ³„μ—μ„œ μ‚¬μš©λ˜λŠ” 아이폰 μ•½ 9μ–΅5000λ§ŒλŒ€ 쀑 3μ–΅5000λ§ŒλŒ€κ°€ 1λ…„ μ•ˆμ— ꡐ체될 κ°€λŠ₯성이 높은 κ΅¬ν˜• μ œν’ˆμΈλ°λ‹€ μ• ν”Œμ˜ 첫 5G폰이기 λ•Œλ¬Έμ΄λ‹€ 또 λ―Έκ΅­ 쀑고 νœ΄λŒ€ν° 셀셀닷컴이 λ―Έκ΅­ μ•ˆλ“œλ‘œμ΄λ“œ 슀마트폰 μ‚¬μš©μž 2000λͺ…을 λŒ€μƒμœΌλ‘œ μ‹€μ‹œν•œ 섀문쑰사에 λ”°λ₯΄λ©΄ μ‘λ‹΅μžμ˜ 33 κ°€ 아이폰12둜 ꡐ체λ₯Ό ν¬λ§ν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬λ‹€ ν•œνŽΈ μ• ν”Œμ€ μ˜€λŠ” 13일 ν˜„μ§€μ‹œκ°„ λ―Έκ΅­ μƒŒν”„λž€μ‹œμŠ€μ½” λ³Έμ‚¬μ—μ„œ 온라인으둜 아이폰12 곡개 행사λ₯Ό μ§„ν–‰ν•  κ³„νšμ΄λ‹€ ν–‰μ‚¬λŠ” μ• ν”Œ ν™ˆνŽ˜μ΄μ§€λ₯Ό 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ‹œμ²­ν•  수 μžˆλ‹€ μž₯μ˜μ€ bluerain@edaily co kr "
# 3) number
str_view_all(content, "\\d+") 
str_view_all(content, "\\d+(st|nd|rd|th)?") # ordinal number
# 4) ν•œκ΅­μ–΄ μ΄μ™Έμ˜ 문자? μ•ŒνŒŒλ²³?
str_extract_all(content, "[^[κ°€-힣] ]+")
## [[1]]
##   [1] "\n\t"                    "\n\t"                   
##   [3] "\n\n"                    "\n"                     
##   [5] "["                       "]"                      
##   [7] "β€˜"                      "12’("                  
##   [9] ")"                       "."                      
##  [11] "β€˜"                      "’"                     
##  [13] "."                       "12"                     
##  [15] "β–³"                      "12"                     
##  [17] "(5.4"                    ")"                      
##  [19] "β–³"                      "12(6.1"                 
##  [21] ")"                       "β–³"                     
##  [23] "12"                      "(6.1"                   
##  [25] ")"                       "β–³"                     
##  [27] "12"                      "(6.7"                   
##  [29] ")"                       "4"                      
##  [31] "."                       "."                      
##  [33] "5G"                      "."                      
##  [35] "(005930)"                "5G"                     
##  [37] "β€˜"                      "S10’"                  
##  [39] "1"                       "7"                      
##  [41] "."                       "β€˜"                     
##  [43] "’"                      "5G"                     
##  [45] "."                       "12"                     
##  [47] "4"                       "6"                      
##  [49] "(GHz)"                   "("                      
##  [51] "6)"                      "5G"                     
##  [53] "."                       ","                      
##  [55] "β€˜"                      "12"                     
##  [57] "’"                      "28Ghz"                  
##  [59] "(mmWave)"                "."                      
##  [61] "4G"                      "5G"                     
##  [63] "."                       "β€˜A14"                  
##  [65] "’"                      "."                      
##  [67] "(AP)"                    "."                      
##  [69] "β€˜5"                     "’"                     
##  [71] "A14"                     "A13"                    
##  [73] "(CPU)"                   "(GPU)"                  
##  [75] "16%,"                    "8.3%"                   
##  [77] "."                       "A12"                    
##  [79] "CPU"                     "40%,"                   
##  [81] "GPU"                     "30%"                    
##  [83] "."                       "."                      
##  [85] "β€˜"                      "’"                     
##  [87] "β€˜"                      "4’"                    
##  [89] "β€˜"                      "5’"                    
##  [91] "."                       "β€˜"                     
##  [93] "’"                      "β€˜"                     
##  [95] "’"                      "."                      
##  [97] "12"                      "USB-C"                  
##  [99] ","                       "("                      
## [101] ")"                       "."                      
## [103] "12"                      "1"                      
## [105] "23"                      "."                      
## [107] "12"                      "11"                     
## [109] "."                       "."                      
## [111] "5G"                      "5G"                     
## [113] "1"                       "."                      
## [115] "β€˜"                      "12"                     
## [117] "’"                      "649"                    
## [119] "749"                     "."                      
## [121] "12"                      "."                      
## [123] "9"                       "5000"                   
## [125] "3"                       "5000"                   
## [127] "1"                       ","                      
## [129] "5G"                      "."                      
## [131] "2000"                    "33%"                    
## [133] "12"                      "."                      
## [135] ","                       "13"                     
## [137] "("                       ")"                      
## [139] "12"                      "."                      
## [141] "."                       "(bluerain@edaily.co.kr)"
## [143] "\n\t"                    "\n\t"
str_extract_all(content, "[[:ascii:]]+")
## [[1]]
##   [1] "\n\t \n\t \n\n \n ["                " "                                 
##   [3] " "                                  "] "                                
##   [5] "12"                                 "("                                 
##   [7] ") "                                 " "                                 
##   [9] " "                                  " "                                 
##  [11] ". "                                 " "                                 
##  [13] " "                                  " "                                 
##  [15] " "                                  " "                                 
##  [17] " "                                  " "                                 
##  [19] " "                                  " "                                 
##  [21] " "                                  " "                                 
##  [23] " "                                  " "                                 
##  [25] " "                                  " "                                 
##  [27] " "                                  ".  "                               
##  [29] " 12 "                               " "                                 
##  [31] "12 "                                "(5.4"                              
##  [33] ") "                                 "12(6.1"                            
##  [35] ") "                                 "12 "                               
##  [37] "(6.1"                               ") "                                
##  [39] "12 "                                " "                                 
##  [41] "(6.7"                               ") "                                
##  [43] " 4"                                 " "                                 
##  [45] " "                                  ". "                                
##  [47] " "                                  " "                                 
##  [49] " "                                  " "                                 
##  [51] " "                                  " "                                 
##  [53] ".  "                                " "                                 
##  [55] " "                                  " "                                 
##  [57] " "                                  " "                                 
##  [59] " "                                  " "                                 
##  [61] " "                                  " 5G"                               
##  [63] " "                                  ". "                                
##  [65] "(005930)"                           " "                                 
##  [67] " "                                  " 5G"                               
##  [69] " "                                  "S10"                               
##  [71] " "                                  " 1"                                
##  [73] " 7"                                 ". "                                
##  [75] " "                                  " "                                 
##  [77] " "                                  " "                                 
##  [79] " "                                  " "                                 
##  [81] " "                                  " "                                 
##  [83] " 5G"                                " "                                 
##  [85] " "                                  " "                                 
##  [87] " "                                  " "                                 
##  [89] ".  "                                " "                                 
##  [91] " "                                  "12 "                               
##  [93] " 4"                                 " "                                 
##  [95] " 6"                                 "(GHz) "                            
##  [97] " "                                  "("                                 
##  [99] "6) 5G "                             " "                                 
## [101] " "                                  " "                                 
## [103] ". "                                 ", "                                
## [105] " "                                  " "                                 
## [107] "12 "                                " "                                 
## [109] " "                                  " "                                 
## [111] " "                                  " 28Ghz"                            
## [113] " "                                  "(mmWave) "                         
## [115] " "                                  " "                                 
## [117] " "                                  " "                                 
## [119] " "                                  ". "                                
## [121] " "                                  " "                                 
## [123] " 4G"                                " 5G"                               
## [125] " "                                  " "                                 
## [127] " "                                  " "                                 
## [129] " "                                  " "                                 
## [131] ".  "                                " "                                 
## [133] " "                                  " "                                 
## [135] "A14 "                               " "                                 
## [137] " "                                  " "                                 
## [139] " "                                  " "                                 
## [141] ". "                                 " "                                 
## [143] " "                                  " "                                 
## [145] "(AP)"                               " "                                 
## [147] " "                                  " "                                 
## [149] " "                                  " "                                 
## [151] ".  "                                " "                                 
## [153] " "                                  "5"                                 
## [155] " "                                  " "                                 
## [157] " "                                  " A14"                              
## [159] " A13"                               " "                                 
## [161] "(CPU)"                              " "                                 
## [163] "(GPU)"                              " "                                 
## [165] " "                                  " 16%, 8.3% "                       
## [167] " "                                  " "                                 
## [169] " "                                  ". A12"                             
## [171] " "                                  " CPU "                             
## [173] " 40%, GPU"                          " 30% "                             
## [175] " "                                  ".  "                               
## [177] " "                                  " "                                 
## [179] " "                                  " "                                 
## [181] " "                                  ". "                                
## [183] " "                                  " "                                 
## [185] " "                                  " "                                 
## [187] " "                                  " "                                 
## [189] "4"                                  " "                                 
## [191] "5"                                  " "                                 
## [193] " "                                  " "                                 
## [195] " "                                  " "                                 
## [197] " "                                  " "                                 
## [199] ". "                                 " "                                 
## [201] " "                                  " "                                 
## [203] " "                                  " "                                 
## [205] " "                                  " "                                 
## [207] " "                                  " "                                 
## [209] " "                                  " "                                 
## [211] " "                                  " "                                 
## [213] " "                                  " "                                 
## [215] " "                                  " "                                 
## [217] " "                                  ".  "                               
## [219] " "                                  "12"                                
## [221] " "                                  " "                                 
## [223] " USB-C "                            " "                                 
## [225] ", "                                 " "                                 
## [227] " "                                  " "                                 
## [229] " "                                  " "                                 
## [231] " "                                  " "                                 
## [233] "("                                  ")"                                 
## [235] " "                                  " "                                 
## [237] ".  "                                "12"                                
## [239] " "                                  " "                                 
## [241] " 1"                                 " "                                 
## [243] " "                                  " 23"                               
## [245] " "                                  " "                                 
## [247] " "                                  " "                                 
## [249] ". "                                 "12 "                               
## [251] " "                                  " "                                 
## [253] " "                                  " "                                 
## [255] " "                                  " 11"                               
## [257] " "                                  " "                                 
## [259] " "                                  " "                                 
## [261] ". "                                 " "                                 
## [263] " "                                  " "                                 
## [265] " "                                  " "                                 
## [267] " "                                  " "                                 
## [269] " "                                  " "                                 
## [271] " "                                  ". "                                
## [273] " 5G"                                " "                                 
## [275] " "                                  " "                                 
## [277] " 5G "                               " "                                 
## [279] " "                                  " 1"                                
## [281] " "                                  " "                                 
## [283] " "                                  " "                                 
## [285] " "                                  " "                                 
## [287] " "                                  ".  "                               
## [289] " "                                  " "                                 
## [291] " "                                  "12 "                               
## [293] " "                                  " 649"                              
## [295] " 749"                               " "                                 
## [297] " "                                  " "                                 
## [299] " "                                  " "                                 
## [301] ".  "                                " "                                 
## [303] "12"                                 " "                                 
## [305] " "                                  " "                                 
## [307] " "                                  " "                                 
## [309] " "                                  " "                                 
## [311] " "                                  " "                                 
## [313] " "                                  " "                                 
## [315] ". "                                 " "                                 
## [317] " "                                  " "                                 
## [319] " "                                  " 9"                                
## [321] "5000"                               " "                                 
## [323] " 3"                                 "5000"                              
## [325] " 1"                                 " "                                 
## [327] " "                                  " "                                 
## [329] " "                                  " "                                 
## [331] " "                                  ", "                                
## [333] " "                                  " 5G"                               
## [335] " "                                  ".  "                               
## [337] " "                                  " "                                 
## [339] " "                                  " "                                 
## [341] " "                                  " "                                 
## [343] " "                                  " "                                 
## [345] " 2000"                              " "                                 
## [347] " "                                  " "                                 
## [349] " "                                  " "                                 
## [351] " 33%"                               " "                                 
## [353] "12"                                 " "                                 
## [355] " "                                  " "                                 
## [357] " "                                  ".  "                               
## [359] ", "                                 " "                                 
## [361] " 13"                                "("                                 
## [363] ") "                                 " "                                 
## [365] " "                                  " "                                 
## [367] " "                                  "12 "                               
## [369] " "                                  " "                                 
## [371] " "                                  ". "                                
## [373] " "                                  " "                                 
## [375] " "                                  " "                                 
## [377] " "                                  " "                                 
## [379] " "                                  ". "                                
## [381] " (bluerain@edaily.co.kr) \n\t \n\t"

λ§₯락 μ ‘κ·Ό 고렀사항: Context-level

  1. 온라인 ν…μŠ€νŠΈ (hashtag, handle, HTML)
  2. 이메일
  3. URLs
  4. Byline
# 1) 온라인 ν…μŠ€νŠΈ
html_reg <- "&nbsp;|&amp;|&lt;|&gt;|&quot;|&#035;|&#039;"
str_extract_all(content, html_reg)
## [[1]]
## character(0)
str_extract_all(content, "[^[:word:]#@ ]+")
## [[1]]
##   [1] "\n\t" "\n\t" "\n\n" "\n"   "["    "]"    "β€˜"   "’("  ")"    "."   
##  [11] "β€˜"   "’"   "."    "β–³"   "("    "."    ")"    "β–³"   "("    "."   
##  [21] ")"    "β–³"   "("    "."    ")"    "β–³"   "("    "."    ")"    "."   
##  [31] "."    "."    "("    ")"    "β€˜"   "’"   "."    "β€˜"   "’"   "."   
##  [41] "("    ")"    "("    ")"    "."    ","    "β€˜"   "’"   "("    ")"   
##  [51] "."    "."    "β€˜"   "’"   "."    "("    ")"    "."    "β€˜"   "’"  
##  [61] "("    ")"    "("    ")"    "%,"   "."    "%"    "."    "%,"   "%"   
##  [71] "."    "."    "β€˜"   "’"   "β€˜"   "’"   "β€˜"   "’"   "."    "β€˜"  
##  [81] "’"   "β€˜"   "’"   "."    "-"    ","    "("    ")"    "."    "."   
##  [91] "."    "."    "."    "β€˜"   "’"   "."    "."    ","    "."    "%"   
## [101] "."    ","    "("    ")"    "."    "."    "("    "."    "."    ")"   
## [111] "\n\t" "\n\t"
#bluerain@edaily.co.kr
email_reg <- "[[:alpha:]]+@[[:alpha:].]+"
str_extract_all(content, email_reg)
## [[1]]
## [1] "bluerain@edaily.co.kr"
# 3) URL
url_reg <- "https?[^[:space:]]+|(www.)[^[:space:]]+"

url_ex <- c("https://t.co/CiIn8bXAuM",
            "www.google.com")

str_extract_all(url_ex, regex(url_reg, ignore_case = T))
## [[1]]
## [1] "https://t.co/CiIn8bXAuM"
## 
## [[2]]
## [1] "www.google.com"
str_extract_all(content, url_reg)
## [[1]]
## character(0)
# 4) Byline

byline_reg <- "\\[[[κ°€-힣] ]+\\]"
str_extract_all(content, byline_reg)
## [[1]]
## [1] "[이데일리 μž₯μ˜μ€ 기자]"