Markup language for structuring content on the Web
Static display of content in a page layout
Inability to create more dynamic displays of information
Once an HTML document is downloaded, the visual appearance will not change.
***Three elements to provide content dynamically
a mechanism to register user behavior in the browser
a scripting engine to formulate responses to those events
a more versatile data requesting mechanism for fetching information asynchronously
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.
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?
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
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>
##
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>
##
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λ₯Ό μ΄μ©ν΄μ ν κ²μ λλ€.
μλ₯Ό λ€μ΄, μ°λ¦¬κ° μ μ²λ¦¬νκ³ μ νλ λ΄μ€ ν μ€νΈμμλ 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κ°μ μ’ λ₯κ° μμ΅λλ€. κ° κΈ°λ₯μ λν΄μλ μμΌλ‘ μ μ©ν΄κ°λ©΄μ λ°°μλ΄ μλ€.
.
\
|
(OR)(
)
[
]
{
}
-
(λ¬Έμ μ§ν©μμ λ²μλ₯Ό ꡬμ±ν¨)^
(λ¬Έμ μ§ν©μμ λΆμ κΈ°λ₯)$
(μμ ννμ΄ λ§€μΉμ λμ)*
(μμ ννμ΄ 0ν νΉμ 1ν μ΄μ λ§€μΉ λ¨)+
(μμ ννμ΄ 1ν μ΄μ λ§€μΉλ¨)?
(μμ ννμ΄ 1ν λ§€μΉλ μλ λλ μλ μλ μμ)β[^[κ°-ν£]]?β
μμΌλ‘ μ°λ¦¬λ μ΄λ¬ν λ©ν λ¬Έμλ₯Ό μμ©νμ¬ μ κ· ννμ ꡬμ±νλ λ²μ μμ λ³Ό κ²μ λλ€. μ¬μ€, μ κ· ννμμμ μ€μν κ²μ μ΄ λ©ν λ¬Έμκ° μ΄λ»κ² μλνλμ§ μ΄ν΄νκ³ μ μ©νλ κ²μ λλ€. λ€νν, λ©ν λ¬Έμμ μ’ λ₯κ° μμ£Ό λ§μ§λ μμ£ . νμ§λ§ λͺλͺ λ©ν λ¬Έμμλ νλ μ΄μμ μλ―Έλ₯Ό κ°μ§ κ²λ μμ΅λλ€. κ·Έλ¦¬κ³ μ΄ κ²½μ° λ©ν λ¬Έμμ μλ―Έλ μ¬μ©νλ λ§₯λ½, μ¬μ© λ°©λ², μ¬μ© μ₯μμ λ°λΌ λ¬λΌμ§κ² λμ£ . λ§μΉ μ°λ¦¬κ° μΌμμ μΌλ‘νλ λνμμλ κ°μ μ΄νλΌλ, λ¬Έλ§₯μ λ°λΌ κ·Έ μλ―Έκ° μμ ν λ¬λΌμ§κ² λλ κ²½μ°κ° μλ κ² μ²λΌ λ§μ΄μ£ . λ°λΌμ μ΄λ¬ν μ κ· ννμ λ©ν λ¬Έμλ₯Ό μ΄ν΄νκ³ μμ©μ μ΅μν΄μ§λ λ°μλ μκ°μ΄ λ€μ 걸릴 μ μμΌλ©° λ§μ μ°μ΅μ΄ νμν©λλ€.
μ°λ¦¬κ° λ°°μΈ μ²« λ©ν λ¬Έμλ 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
μμ 리ν°λ΄ λ¬Έμ,βν°βμ΄ ν¬ν¨λ λͺ¨λ λ¨μ΄λ€μ λͺ¨λ μ°Ύμλ΄μ΄ μΆμΆνλ λͺ
λ Ήμ΄λ?
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λ‘ μλ €μ§ λ λ€λ₯Έ μ νμ λ¬Έμ ν΄λμ€λ₯Ό μκ°ν©λλ€. λ€μμ 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"
ν¨μ | μ€λͺ | κ²°κ³Ό |
---|---|---|
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"
# 1) μ¨λΌμΈ ν
μ€νΈ
html_reg <- " |&|<|>|"|#|'"
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] "[μ΄λ°μΌλ¦¬ μ₯μμ κΈ°μ]"