close_btn
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

4강은 Anchors, 바로 문자열 내에서 문서의 처음, 문서의 마지막 혹은 음절의 처음, 음절의 끝 등 위치를 지정하는 명령어입니다.

re1

 

 

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

setwd("d:/rworking/post")
txt<-readLines("sample2.txt")
txtge<-gregexpr("^\\w",txt,perl=TRUE)
ge
r_index<-ge[[1]]
r_long<-attr(r_index,"match.length")
len<-length(r_index)
for(i in 1:len){
cat(paste0(substr(txt,r_index[i],r_index[i]+r_long[i]-1))," ")
}

우선 다음 텍스트를 working directory에 sample2.txt 라는 이름으로 저장합니다.

Sample text for testing: abcd ABCD 0123 +-_.,!@#$%^&*();\/|<>"' 123 -98.7 3.141 .6180 9,000 +42 555.123.4567 (02)-555-2468 02-555-2468 foo@demo.net bar.ba@test.co.uk www.demo.com http://foo.co.uk/

 

> setwd("d:/rworking/post")
> txt<-readLines("sample2.txt")
경고 메시지가 손실되었습니다
In readLines("sample2.txt") :
'sample2.txt'에서 불완전한 맨 마지막 줄이 검색되었습니다
> txt
[1] "Sample text for testing: abcd ABCD 0123 +-_.,!@#$%^&*();\\/|<>\"' 123 -98.7 3.141 .6180 9,000 +42 555.123.4567\t(02)-555-2468 02-555-2468 foo@demo.net\tbar.ba@test.co.uk www.demo.com\thttp://foo.co.uk/"
> ge<-gregexpr("^\\w",txt,perl=TRUE)
> ge
[[1]]
[1] 1
attr(,"match.length")
[1] 1
attr(,"useBytes")
[1] TRUE

txt를 읽어와서 gregexpr("^\\w",txt,perl=TRUE)  를 통해 정규표현식 "^\\w"에 해당하는 문자열의 위치와 만족하는 패턴의 길이를 얻어냈습니다.  이 때 "^\\w"의 의미는 txt 영소문자와 대문자, 숫자, 언더바를 찾되 문서의 맨 처음에 위치하는 것만 찾는 것입니다.

 

> r_index<-ge[[1]]
> r_long<-attr(r_index,"match.length")
> len<-length(r_index)
> for(i in 1:len){
+ cat(paste0(substr(txt,r_index[i],r_index[i]+r_long[i]-1))," ")
+ }
S

따라서 문서의 맨 앞글자 "S"가 출력됩니다.

패턴을 만족하는 위치를 r_index에 담고 패턴의 길이를 r_long에 담고 이 벡터들의 길이를 len에 담아 for 문 안에서 차례로 각각위치에 있는 패턴을 만족하는 문자열< substr(txt,r_index[i],r_index[i]+r_long[i]-1)  >을 paste0(," ") 를 통해 공백을 통해 구분하여 cat으로 모두 출력하는 수식입니다. 궁금한 점이 있으시면 커뮤니티 게시판에 올려주세요 !

> ge<-gregexpr("\\W$",txt,perl=TRUE)
> ge
[[1]]
[1] 196
attr(,"match.length")
[1] 1
attr(,"useBytes")
[1] TRUE

이제 문미를 나타내는 "$"를 이용하여 정규표현식을 연습해보지요 !

우리의 텍스트를 보면

Sample text for testing: abcd ABCD 0123 +-_.,!@#$%^&*();\/|<>"' 123 -98.7 3.141 .6180 9,000 +42 555.123.4567 (02)-555-2468 02-555-2468 foo@demo.net bar.ba@test.co.uk www.demo.com http://foo.co.uk/

로 맨 마지막 문자가 "/"로 특수문자인 것을 볼 수 있습니다.

따라서 "\\W$" 로써 영문자,숫자,언더바를 제외한 문자 중(특수문자,공백) 문미에 위치한 문자를 가져오라는 정규표현식을 적용하였습니다.
앞선 포스팅에서 말씀 드렸듯 \w가 영문자,숫자,언더바를 의미하고 \W가 그 여집합을 의미합니다 !

> r_index<-ge[[1]]
> r_long<-attr(r_index,"match.length")
> len<-length(r_index)
> for(i in 1:len){
+ cat(paste0(substr(txt,r_index[i],r_index[i]+r_long[i]-1))," ")
+ }
/

"/"가 제대로 출력됩니다 !

 

 

 

 

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 초급 R 강의 게시판 이용 관련 공지사항 1 DataMarket 2014.05.21 511926
» 초급 [BigData - R강의 초급] 정규표현식 regular expression 4강 (1) – Anchors "^", "$" 2 DataMarket2 2014.05.23 101687
49 초급 [BigData - R강의 초급] 정규표현식 regular expression 3강 – alternation "|" DataMarket2 2014.05.23 96710
48 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(4) – 게으른 수량자 "+?", "*?", "{n,}?" 1 DataMarket2 2014.05.23 110278
47 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(3) – 수량자 "?" 1 DataMarket2 2014.05.23 109658
46 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(2) – 수량자 {} 1 DataMarket2 2014.05.23 104352
45 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(1) – 수량자 “+”, “*” DataMarket2 2014.05.23 107126
44 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(4) – 문자열 형태표현 ".", "\W", "\D", "\S" DataMarket2 2014.05.23 94866
43 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(3) – 문자열 형태표현 "\p{Hangul}"(한글), 특수문자 2 DataMarket2 2014.05.23 102200
42 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(2) – 문자열 형태표현 “\d”, “\s” DataMarket2 2014.05.23 93640
41 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(1) – 문자열 형태표현 ".", "\w" 3 DataMarket2 2014.05.23 113699
40 초급 [BigData - R강의 초급] 따옴표를 문자열로 인식시키려면? - escaper \ DataMarket2 2014.05.23 69634
39 초급 [BigData - R강의 초급] 문자열 패턴 regular expression 연습 DataMarket2 2014.05.23 70283
38 초급 [BigData - R강의 초급] 문자열 검색 – grep, regexpr, gregexpr DataMarket2 2014.05.23 100683
37 초급 [BigData - R강의 초급] 문자열 찾아바꾸기 – sub, gsub 1 DataMarket2 2014.05.23 90896
36 초급 [BigData - R강의 초급] 문자열 나누기 – strsplit, str_split DataMarket2 2014.05.23 105946
35 초급 [BigData - R강의 초급] 문자열 일부 추출 – substr(), str_sub() 비교 2 DataMarket2 2014.05.23 102216
34 초급 [BigData - R강의 초급] 문자열 포멧 출력 – sprintf 함수 1 DataMarket2 2014.05.23 59768
33 초급 [BigData - R강의 초급] 문자열 길이 – nchar 함수 1 DataMarket2 2014.05.23 57839
32 초급 [BigData - R강의 초급] 문자열 이어붙이기 - paste, paste0 함수 1 DataMarket2 2014.05.23 69635
31 초급 [BigData - R강의 초급] 결측치 처리 함수 - complete.cases DataMarket2 2014.05.23 50921
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