close_btn
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

R초급강의 문자열 강의의 대미를 장식할 Regular Expression (정규 표현식) 입니다 ! 지난 포스팅을 통해 맛보기를 보여드렸지요 ! "." 과 []의 쓰임에 대해서 알려드렸습니다. 이제 체계적으로!!!! 알려드리겠습니다 :)

Regular Expression은 문자열의 패턴을 표현하는 형태입니다. "abcd 0123 +-.,!@# ABCD 가나다라" 여기서 숫자만 뽑아오고 싶다면 어떻게 해야 할까요? 0일때, 1일때, 2일때 각각 확인해서 or논리를 적용하여 뽑아와야 할까요 ? 정규 표현식을 모를 때에는 그렇게 해야합니다. 그러나 ! 이제는 우리는 그렇게 멍청하게 손발고생할 필요가 없습니다.

정규 표현식은 문자열의 형태를 분류하여 표현식으로 표시합니다 이것을 Character Classes라고 합니다. 모든 아래의 Character Classes는 글자 1글자를 의미합니다. 예를 들어 "\d"는 어떠한 숫자 하나를 의미하지요.

자신이 쓴 정규표현식이 맞는 정규표현식인지 확인해 보고 싶으시면 http://www.regexr.com/ 이 사이트를 이용하세요 ! 간단한 강의도 포함되어 있어 매우 유용합니다.

 

표현식

의미

동등 표현식

"."

개행을 제외한 모든문자 (공백포함)

 [^\n\r]

"\w"

영소문자, 영대문자, 숫자, _(언더바)

 [A-Za-z0-9_]

"\d"

숫자, _(언더바)

[0-9]

"\s"

공백, 탭, 개행

 

여기에 문자열의 형태를 복합적으로 표현해주는 대괄호 패턴이 있습니다.

표현식

의미

[abc]

a, b 또는 c (a, b, c 모두)

[^abc]

a,b,c 제외 모두

[a-z]

a에서 z까지 모두

위의 표에서 "\d"가 의미하는 동등 표현식이  [0-9] 라고 했지요 ! 이는 숫자 0부터 9까지 중에 한가지 글자라는 뜻입니다. 이해 되시지요 !

##################################################

txt <- "abcd 0123 +-.,!@# ABCD 가나다라"
nchar(txt)
ge_dot<-gregexpr(".",txt,perl=TRUE)
ge_dot
ge_w<-gregexpr("\\w",txt,perl=TRUE)
ge_w
index<-ge_w[[1]]
len<-length(index)
for ( i in 1:len)
{
cat(substr(txt,index[i],index[i]))
}

 

 

> txt <- "abcd 0123 +-.,!@# ABCD 가나다라"
> nchar(txt)
[1] 27
> ge_dot<-gregexpr(".",txt,perl=TRUE)
> ge_dot
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
attr(,"match.length")
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

gregexpr 함수는 특정 패턴을 만족하는 시작위치와 특정패턴을 만족하고 있는 길이에 대한 정보를 담고 있는 list를 반환하는 함수입니다. 자세한 건 지난 강의 참고하세요 ! (http://www.datamarket.kr/?p=1211 )

따라서 위의 예제는 "abcd 0123 +-.,!@# ABCD 가나다라" 에서 정규표현식 "."을 만족하는 글자의 위치, 즉 모든 글자의 위치를 가져온 것입니다.

 

> ge_w<-gregexpr("\\w",txt,perl=TRUE)
> ge_w
[[1]]
[1] 1 2 3 4 6 7 8 9 19 20 21 22
attr(,"match.length")
[1] 1 1 1 1 1 1 1 1 1 1 1 1> index<-ge_w[[1]]
> len<-length(index)
> for ( i in 1:len)
+ {
+ cat(substr(txt,index[i],index[i]))
+ }
abcd0123ABCD

"\w"를 만족하는 문자들을 출력해주는 코드입니다.

코드상에서는 "\w"가 "\\w"로 표현되어 있는데요 이는 \가 R 문법으로 사용되고 있기 때문에 escaper \를 붙여 문자열로 인식되게 하였기 때문입니다. escaper 관해서는 이전 포스팅을 참고하세요 ! http://www.datamarket.kr/?p=1370

 ge_w<-gregexpr("\\w",txt,perl=TRUE) 를 통해 "\w", 즉 영소문자, 영대문자, 숫자와 언더바를 포함한 특수문자 제외 문자열을 만족하는 위치를 가져왔습니다. 이 때 반환된 list를 출력 해 보면 아래와 같습니다.

> ge_w
[[1]]
[1] 1 2 3 4 6 7 8 9 19 20 21 22
attr(,"match.length")
[1] 1 1 1 1 1 1 1 1 1 1 1 1

그렇다면 ge_w[[1]]은 패턴을 만족하는 위치 정보가 담긴 vector가 되겠지요!

> ge_w[[1]]
[1] 1 2 3 4 6 7 8 9 19 20 21 22
attr(,"match.length")
[1] 1 1 1 1 1 1 1 1 1 1 1 1

index<-ge_w[[1]] 를 통해 이 반환된 list내의 vector를 저장합니다.이를 출력하기 위해서 len<-length(index) 를 통해 vector의 길이를 len에 저장합니다

그리고 for문 내에서 substr(txt,index[i],index[i]) 로서 지정한 위치의 문자만 따로 가져오고 cat() 함수로 콘솔창에 출력 해 줍니다. 이쪽 부분은 제어문을 배우지 않았기 때문에 아 출력해주는구나 ! 라고 이해하시면 됩니다.

결과값이 abcd0123ABCD로 말씀드렸듯이 영소문자, 대문자, 숫자가 출력되는 것을 볼 수 있지요!

 

?
  • ?
    pandora jewelry 2018.04.04 09:53
    http://www.nikeairvapormaxflyknit.us.com/ air max 95
    http://www.fitflopsshoes.us.com/ fitflop sale
    http://www.lebron15-shoes.us.com/ lebron soldier
    http://www.adidasnmdrunnerr1.us.com/ yeezy shoes
    http://www.pandora-jewelrysale.us.com/ pandora jewelry official site
    http://www.katespadepurses.us.com/ kate spade backpack
    http://www.fitflops-sale.us.com/ fitflops clearance
    http://www.louboutinredbottoms.us.com/ christian louboutin mens sneakers
    http://www.jordan11spacejams.us.com/ jordan 11 space jam
    http://www.pumafentyrihannashoes.us.com/ puma shoes for women
    http://www.longchampbag.us.com/ longchamp bag
    http://www.nikeairmax-90.us.com/ air max 97
    http://www.birkenstocksandalssale.us.com/ birkenstock shoes
    http://www.yeezyboost350shoes.us.com/ adidas yeezy boost 350 v2
    http://www.jordans11shoes.us.com/ jordan 11 retro
    http://www.adidasyeezy-350.us.com/ adidas boost
    http://www.pandorajewelryrings.us.com/ pandora jewelry
    http://www.adidas-ultraboost.us.com/ yeezy boost 350
    http://www.salomonspeedcross3.us.com/ salomon shoes
    http://www.kd10-shoes.us.com/ kd
    http://www.airmax90shoes.us.com/ nike vapormax
    http://www.pandorajewelryscharms.us.com/ pandora charms
    http://www.curry4-shoes.us.com/ curry shoes
    http://www.hermesbirkin-handbags.us.com/ hermes bag
    http://www.kyrie-4.us.com/ kevin durant shoes
    jingting17p
  • ?
    yeezy boost 350 2018.05.10 18:37
    http://www.nikeairvapormaxflyknit.us.com/ vapormax
    http://www.kyrie-4.us.com/ kyrie irving
    http://www.nikeairmax-90.us.com/ air huarache
    http://www.katespadepurses.us.com/ kate spade wallet
    http://www.curry4-shoes.us.com/ curry 2
    http://www.longchampbag.us.com/ longchamp le pliage
    http://www.adidasyeezy-350.us.com/ adidas ultra boost
    http://www.yeezyboost350shoes.us.com/ yeezy shoes
    http://www.adidas-ultraboost.us.com/ adidas boost
    http://www.fitflops-sale.us.com/ fitflop uk
    http://www.pumafentyrihannashoes.us.com/ puma fenty
    http://www.hermesbirkin-handbags.us.com/ hermes handbags
    http://www.adidasnmdrunnerr1.us.com/ ultra boost uncaged
    http://www.pandorajewelryscharms.us.com/ pandora charms
    http://www.birkenstocksandalssale.us.com/ birkenstock sandals
    http://www.fitflopsshoes.us.com/ fitflop
    http://www.airmax90shoes.us.com/ nike vapor max
    http://www.louboutinredbottoms.us.com/ red bottom shoes
    http://www.jordan11spacejams.us.com/ jordan 8
    http://www.jordans11shoes.us.com/ jordan 7
    http://www.pandorajewelryrings.us.com/ pandora
    http://www.kd10-shoes.us.com/ kevin durant shoes
    http://www.salomonspeedcross3.us.com/ salomon speedcross 4
    http://www.lebron15-shoes.us.com/ lebron 10
    http://www.pandora-jewelrysale.us.com/ pandora bracelet
    caijuan83y
  • ?
    Yeezy 500 2018.06.02 19:58
    yeezy v 2の販売,환상 판매,La vendita Yeezy V2,Yeezy V2 de vente,En el mercado yeezy V2.
    http://www.yeezy500.org/ Yeezy 500
    http://www.yeezy500.org/ Yeezy 2018
    http://www.yeezy500.org/ Ultra Boost 4.0
    http://www.yeezy500.org/ Ultra Boost
    http://www.yeezy500.org/ Supreme Yeezy
    http://www.yeezy500.org/ Cheap Yeezy
    http://www.yeezy500.org/ Adidas Yeezy
    http://www.yeezy500.org/ Adidas V2
    http://www.yeezy500.org/ Adidas Ultra Boost
    http://www.yeezy500.org/ Adidas 500
    http://www.yeezyv2sales.org/ Adidas Yeezys
    http://www.yeezyv2sales.org/ Adidas Yeezy V2
    http://www.yeezyv2sales.org/ V2 Sales
    http://www.yeezyv2sales.org/ Adidas V2
    http://www.yeezyv2sales.org/ Yeezy Sales
    http://www.yeezyv2sales.org/ Yeezy V2 Sales
    http://www.yeezyv2sales.org/ Yeezy V2
    http://www.yeezyv2.top/ Yeezy V2 Boost
    http://www.yeezyv2.top/ Yeezy V2
    http://www.yeezyv2.top/ Yeezy Boost V2
    http://www.yeezyv2.top/ Yeezy 350 V2
    http://www.yeezyv2.top/ Yeezy 350 Boost V2
    http://www.yeezyv2.top/ Adidas Yeezy V2
    http://www.yeezyv2.top/ Adidas V2
    http://www.yeezysv2.co.uk/ Yeezy UK
    http://www.yeezysv2.co.uk/ Yeezy V2
    http://www.yeezysv2.co.uk/ Yeezy For Sale
    http://www.yeezysv2.co.uk/ Yeezy Cream
    http://www.yeezysv2.co.uk/ Yeezy 2018
    http://www.yeezysv2.co.uk/ Yeezy
    http://www.yeezysv2.co.uk/ Supreme Yeezy
    http://www.yeezyshoes.top/ Yeezy Shoes
    http://www.yeezyshoes.top/ Yeezy
    http://www.yeezyshoes.top/ Yeezys
    http://www.yeezyboost350v2outlet.com/ Yeezys Boost 350 V2 Outlet
    http://www.yeezyboost350v2outlet.com/ Yeezy Boost V2
    http://www.yeezyboost350v2outlet.com/ Yeezy Boost 350 V2
    http://www.yeezyboost350v2outlet.com/ Yeezy Boost 350
    http://www.newyeezyv2.org/ New Yeezy V2
    http://www.newyeezyv2.org/ Adidas Yeezys
    http://www.newyeezyv2.org/ Adidas Yeezy V2
    http://www.newyeezyv2.org/ Adidas Yeezy
    http://www.newyeezyv2.org/ Adidas V2
    http://www.newyeezyv2.com/ New Yeezys
    http://www.newyeezyv2.com/ New Yeezy V2
    http://www.newyeezyv2.com/ New Yeezy
    http://www.ukmonclercoat.co.uk/ Uk Moncler Coat
    http://www.ukmonclercoat.co.uk/ Uk Moncler
    http://www.monclerukonline.co.uk/ Moncler Uk Online
    http://www.monclerukonline.co.uk/ Moncler Uk
    http://www.moncler-ukoutlet.co.uk/ Moncler Uk Outlet
    http://www.moncler-ukoutlet.co.uk/ Moncler Uk
    http://www.monclerjacketoutlets.co.uk/ Moncler Jacket Outlets
    http://www.monclerjacketoutlets.co.uk/ Moncler Jacket
    http://www.monclerukjackets.co.uk/ Moncler Uk Jackets
    http://www.monclerukjackets.co.uk/ Moncler Jackets
    http://www.canadagooseuk.org/ Goose Down Jackets
    http://www.canadagooseuk.org/ Canada Goose Uk
    http://www.usnfljerseys.us/ Nfl Jerseys
    http://www.usnfljerseys.us/ Nfl Jersey Cheap
    http://www.usnfljerseys.us/ Nfl Jersey
    http://www.usnfljerseys.org/ Nfl Jersey Cheap
    http://www.usnfljerseys.org/ Nfl Jersey
    http://www.usnfljerseys.org/ Nfl Cheap Jerseys
    http://www.uscheapnfljersey.com/ Cheap Nfl Jerseys
    http://www.uscheapnfljersey.com/ Cheap Nfl Jersey
    http://www.nfljerseyscheapsales.com/ Nhl Jerseys 2018
    http://www.nfljerseyscheapsales.com/ Nfl Jerseys For Sale
    http://www.nfljerseyscheapsales.com/ Nfl Jerseys Cheap
    http://www.cheapnba.top/ Nba Jerseys Cheap
    http://www.cheapnba.top/ Nba Jerseys 2018
    http://www.cheapnba.top/ Nba Jerseys
    http://www.uscheapjerseys.us.com/ Cheap Jerseys
    http://www.uscheapjerseys.us.com/ Cheap Jersey 2018 Us
    http://www.uscheapjerseys.us.com/ Cheap China Jerseys
    http://www.air-max2018.com/ Air Max 2018
    http://www.air-max2018.com/ 2018 Nike Air Max
    http://www.air-max2018.com/ 2018 Air Max
    http://www.nikeairvapormax.top/ Nike Vapormax
    http://www.nikeairvapormax.top/ Nike Air Vapor Max
    http://www.vapor-max.com/ Vapormax
    http://www.vapor-max.com/ Vapor Max Nike
    http://www.vapor-max.com/ Vapor Max
    http://www.vapormax2018.org Vapormax 2018
    http://www.vapormax2018.org Vapormax
    http://www.vapormax2018.org Vapor Max Nike
    http://www.vapormax2018.org Vapor Max
    http://russia2018jersers.com/ 2018
    http://russia2018jersers.com/ Worldcup 2018
    http://russia2018jersers.com/ World Cup Soccer 2018
    http://russia2018jersers.com/ World Cup Russia 2018
    http://www.footballjerseycheap.com/ World Cup Russia
    http://www.footballjerseycheap.com/ World Cup Football 2018
    http://www.footballjerseycheap.com/ World Cup Football
    http://www.footballjerseycheap.com/ World Cup 2018
    http://www.warriors-gs.com/ Warriors Jersey
    http://www.warriors-gs.com/ Nba Warriors
    http://www.warriors-gs.com/ Golden State Warriors
    http://www.michael-kors-bags.us/ Michael Kors Factory Sale
    http://www.michael-kors-bags.us/ Michael Kors bags
    http://www.michael-kors-bags.us/ Michael Kors
    http://www.jordan-air.us/ Jordan Air
    http://www.jordan-air.us/ Cheap Jordan Shoes
    http://www.jordan-air.us/ Air Jordan Shoes
    http://www.jordan-air.us/ Air Jordan
    http://www.asics.us.com/ Asics Shoes
    http://www.asics.us.com/ Asics
    http://www.clearancefitflop.com/ Cheap Fitflop
    http://www.clearancefitflop.com/ Fitflop Clearance
    http://www.clearancefitflop.com/ Fitflop Sale Clearance
    http://www.clearancefitflop.com/ Discount Fitflop
    http://www.clearancefitflop.com/ Fitflop Outlet
    http://www.clearancefitflop.com/ Fitflop Clearance Outlet
    http://www.clearancefitflop.com/ Clearance Fitflop

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 초급 R 강의 게시판 이용 관련 공지사항 1 DataMarket 2014.05.21 443267
50 초급 [BigData - R강의 초급] 정규표현식 regular expression 4강 (1) – Anchors "^", "$" 2 DataMarket2 2014.05.23 82784
49 초급 [BigData - R강의 초급] 정규표현식 regular expression 3강 – alternation "|" DataMarket2 2014.05.23 77520
48 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(4) – 게으른 수량자 "+?", "*?", "{n,}?" 1 DataMarket2 2014.05.23 89855
47 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(3) – 수량자 "?" 1 DataMarket2 2014.05.23 88990
46 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(2) – 수량자 {} 1 DataMarket2 2014.05.23 84110
45 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(1) – 수량자 “+”, “*” DataMarket2 2014.05.23 87173
44 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(4) – 문자열 형태표현 ".", "\W", "\D", "\S" DataMarket2 2014.05.23 76372
43 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(3) – 문자열 형태표현 "\p{Hangul}"(한글), 특수문자 2 DataMarket2 2014.05.23 81912
42 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(2) – 문자열 형태표현 “\d”, “\s” DataMarket2 2014.05.23 75998
» 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(1) – 문자열 형태표현 ".", "\w" 3 DataMarket2 2014.05.23 92490
40 초급 [BigData - R강의 초급] 따옴표를 문자열로 인식시키려면? - escaper \ DataMarket2 2014.05.23 54400
39 초급 [BigData - R강의 초급] 문자열 패턴 regular expression 연습 DataMarket2 2014.05.23 56302
38 초급 [BigData - R강의 초급] 문자열 검색 – grep, regexpr, gregexpr DataMarket2 2014.05.23 81323
37 초급 [BigData - R강의 초급] 문자열 찾아바꾸기 – sub, gsub 1 DataMarket2 2014.05.23 71273
36 초급 [BigData - R강의 초급] 문자열 나누기 – strsplit, str_split DataMarket2 2014.05.23 83223
35 초급 [BigData - R강의 초급] 문자열 일부 추출 – substr(), str_sub() 비교 1 DataMarket2 2014.05.23 76429
34 초급 [BigData - R강의 초급] 문자열 포멧 출력 – sprintf 함수 1 DataMarket2 2014.05.23 46447
33 초급 [BigData - R강의 초급] 문자열 길이 – nchar 함수 1 DataMarket2 2014.05.23 44461
32 초급 [BigData - R강의 초급] 문자열 이어붙이기 - paste, paste0 함수 1 DataMarket2 2014.05.23 53820
31 초급 [BigData - R강의 초급] 결측치 처리 함수 - complete.cases DataMarket2 2014.05.23 39816
Board Pagination ‹ Prev 1 2 ... 3 Next ›
/ 3

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5