[사용 함수]
패키지명 | 함수명 | 설명 |
| grep | pattern을 포함하고 있는 단어의 결과값의 위치를 반환 |
| grepl | pattern을 포함하고 있는 단어에 대해 T/F 반환 |
| nchar | character 개수 반환 ,str_length 와 동일 |
| regexpr | 문자열에서 문자 위치 찾기 |
| gregexpr | 문자열에서 문자 위치 찾기(global, 전부) |
| sub | 문자열에서 문자 바꾸기 |
| gsub | 문자열에서 문자 바꾸기(global, 전부) |
| paste0 | 띄어쓰기 없이 붙이기 |
[정규표현식(regular expression)]
표현 | 설명 |
* | 0 or more. |
+ | 1 or more. |
? | 0 or 1. |
. | 무엇이든 한 글자를 의미 |
^ | 시작 문자 지정 ex) ^[abc] abc중 한 단어 포함한 것으로 시작 |
[^] | 해당 문자를 제외한 모든 것 ex) [^abc] a,b,c 는 빼고 |
$ | 끝 문자 지정 |
[a-z] | 알파벳 소문자 중 1개 |
[A-Z] | 알파벳 대문자 중 1개 |
[0-9] | 모든 숫자 중 1개 |
[a-zA-Z] | 모든 알파벳 중 1개 |
[가-힣] | 모든 한글 중 1개 |
[^가-힣] | 모든 한글을 제외한 모든 것 |
[:punct:] | punctuation. |
[:alpha:] | letters. |
[:lower:] | lowercase letters. |
[:upper:] | upperclass letters. |
[:digit:] | digits |
[:xdigit:] | hex digits |
[:alnum:] | letters and numbers |
[:cntrl:] | control characters. |
[:graph:] | letters, numbers, and punctuation. |
[:print:] | letters, numbers, punctuation, and whitespace. |
[:space:] | space characters (basically equivalent to \s). |
[:blank:] | space and tab. |
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 28 29 30 31 32 33 34 35 36 37 38 39 40 | > # Regular expressions > > bananas <- c("banana", "Banana", "BANANA") > > # .은 무엇이든 한 글자를 의미함 > x <- c("apple", "banana", "pear") > str_extract(x, ".a.") # .은 무엇이든 한 글자를 의미함 [1] NA "ban" "ear" > str_detect("\nX\n", ".X.") # 줄바꿈은 포함 안함 [1] FALSE > str_detect("\nX\n", regex(".X.", dotall = TRUE)) # dotall 은 .이 다음 줄에서도 영향 [1] TRUE > > dot <- "\." # 오류, \가 계속 escape 문자로 남아있기 때문 Error: '\.' is an unrecognized escape in character string starting ""\." > dot <- "\\." > dot [1] "\\." > writeLines(dot) \. > > str_extract(c("abc", "a.c", "bef"), "a\\.c") [1] NA "a.c" NA > str_extract(c("abc", "a.c", "bef"), "a.c") [1] "abc" "a.c" NA > > x <- "a\\b" > writeLines(x) a\b > str_extract(x, "\\\\") [1] "\\" > writeLines(str_extract(x, "\\\\")) # 역슬래시 하나를 표현하기 위해 4개 역슬래시 필요함 \ > > x <- c("a.b.c.d", "aeb") > starts_with <- "a.b" > str_detect(x, paste0("^", starts_with)) # paste0 띄어쓰기 없이 붙이기 [1] TRUE TRUE > str_detect(x, paste0("^\\Q", starts_with, "\\E")) # ^\\Q" "\\E" 사이에 있는 패턴 정확히 만족하는 것만 [1] TRUE FALSE | cs |
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | > # \\d digit \\D 숫자 빼고 > # \\s Space \\S 공백 빼고 > # \\w word \\W 글자 빼고 > str_extract_all("1 + 2 = 3", "\\d+")[[1]] # +는 1회 이상 , 숫자만 뽑아내기 [1] "1" "2" "3" > str_extract_all("1 + 2 = 3", "\\D+")[[1]] [1] " + " " = " > > (text <- "Some \t badly\n\t\tspaced \f text") [1] "Some \t badly\n\t\tspaced \f text" > str_replace_all(text, "\\s+", " ") # 여러개 띄어져있는 것을 한 칸으로 바꿔줌 [1] "Some badly spaced text" > > str_extract_all("Don't eat that!", "\\w+")[[1]] [1] "Don" "t" "eat" "that" > str_split("Don't eat that!", "\\W")[[1]] # 글자가 아닌 것 기준으로 split [1] "Don" "t" "eat" "that" "" > > # 구분 > # ^[abc] abc 중 한 단어 포함한 것으로 시작하는 것 > # [^abc] a,b,c 는 빼고 > > # 실제 사용시에는 [] 한번 더 써야함 [[:digit]] > # [:punct:] : punctuation. > # [:alpha:] : letters. > # [:lower:] : lowercase letters. > # [:upper:] : upperclass letters. > # [:digit:] : digits. > # [:xdigit:] : hex digits. > # [:alnum:] : letters and numbers. > # [:cntrl:] : control characters. > # [:graph:] : letters, numbers, and punctuation. > # [:print:] : letters, numbers, punctuation, and whitespace. > # [:space:] : space characters (basically equivalent to \s). > # [:blank:] : space and tab. > > # Repetition > # ?: 0 or 1. > # +: 1 or more. > # *: 0 or more. > > x <- "1888 is the longest year in Roman numerals: MDCCCCCLXXXVIII" > str_extract(x, "CC?") [1] "CC" > str_extract(x, "CC+") [1] "CCCCC" > str_extract(x, 'C[LX]+') [1] "CLXXX" | cs |
[grep(), grepl() 함수]
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | > # grep(), grepl() 함수 > # grep (globally search a regular expression & print) > char1 <- c('apple','Apple','APPLE','banana','grape') > grep('pp',char1) # pattern을 포함하고 있는 단어의 결과값의 위치를 반환 [1] 1 2 > grepl('pp',char1) # logical [1] TRUE TRUE FALSE FALSE FALSE > grep('pp',char1,value=T) # pattern을 포함하고 있는 문자열 반환 [1] "apple" "Apple" > > # grep()함수에 여러 패턴 사용하기 > char2 <- c('apple','banana') > grep(char2,char1) #패턴을 2개 이상 주면 첫 번째 패턴만 사용 [1] 1 Warning message: In grep(char2, char1) : argument 'pattern' has length > 1 and only the first element will be used > paste(char2,collapse='|') [1] "apple|banana" > grep(paste(char2,collapse='|'),char1,value=T) # 여러 패턴을 사용하는 방법 or로 연결 [1] "apple" "banana" > grep("apple|banana",char1,value=T) # 여러 패턴을 사용하는 방법 or로 연결 [1] "apple" "banana" > > grep('^A',char1,value=T) #^을 사용하여 대문자 'A' 로 시작하는 단어 찾기 [1] "Apple" "APPLE" > grep('e$',char1,value=T) #$을 사용하여 소문자 'e' 로 끝나는 단어 찾기 [1] "apple" "Apple" "grape" > > char3 <- c('grape1','apple1','apple','orange','Apple','grape0') > grep('ap',char3,value=T) #ap 가 포함된 단어 찾기 [1] "grape1" "apple1" "apple" "grape0" > grep('[1-9]',char3,value=T) #1~9사이숫자가 포함된 단어 찾기 [1] "grape1" "apple1" > grep('[0-9]',char3,value=T) #모든숫자중 어느 것이 포함된 단어 찾기 [1] "grape1" "apple1" "grape0" > > grep('[[:upper:]]',char3,value=T) #대문자가 포함된 단어 찾기 [1] "Apple" > grep('[A-Z]',char3,value=T) #대문자가 포함된 단어 찾기 [1] "Apple" > grep('[A-z]',char3,value=T) #영어가 포함된 모든 단어 찾기 small z [1] "grape1" "apple1" "apple" "orange" "Apple" "grape0" > # 모든 한글은 [ㄱ-힣] or [가-힣] | cs |
[nchar() 함수]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | > # nchar() 함수 > # character 개수 반환 > nchar(char1) [1] 5 5 5 6 5 > nchar('James Seo') [1] 9 > nchar('서진수') [1] 3 > str_length(char1) [1] 5 5 5 6 5 > str_length('James Seo') [1] 9 > str_length('서진수') [1] 3 | cs |
[Escape]
1 2 3 4 5 6 | > # Escape > # 약속된 언어를 지우는 역할 \ > paste('I','\'m','Hungry') #특수문자가 있을 경우 Escape character "\" 주의 [1] "I 'm Hungry" > paste("I'm","Hungry") [1] "I'm Hungry" | cs |
[regexpr(), gregexpr() 함수]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | > # regexpr(), gregexpr() > # 문자열에서 문자 위치 찾기 > grep('-','010-8706-4712') # grep으로는 위치를 찾을 수 없음. [1] 1 > regexpr('-','010-8706-4712') # 처음 나오는 '-' 문자 위치 찾기 [1] 4 attr(,"match.length") [1] 1 attr(,"index.type") [1] "chars" attr(,"useBytes") [1] TRUE > gregexpr('-','010-8706-4712') # 나오는 '-' 문자 위치 모두 찾기 , g => global [[1]] [1] 4 9 attr(,"match.length") [1] 1 1 attr(,"index.type") [1] "chars" attr(,"useBytes") [1] TRUE | cs |
[sub(), gsub() 함수]
1 2 3 4 5 6 | > # sub(), gsub() > # 문자열에서 문자 바꾸기 > sub("p","*","apple") # substitute 대체하다 [1] "a*ple" > gsub("p","*","apple") # global [1] "a**le" | cs |
'IT,인터넷 관련 학습 > R언어 학습' 카테고리의 다른 글
[R] stringr 패키지 (0) | 2019.05.12 |
---|---|
[R] dplyr 패키지 (0) | 2019.05.12 |
[R] 함수 II (0) | 2019.05.12 |
[R] 함수 I (0) | 2019.05.12 |
[R] 데이터 입력 및 출력 (0) | 2019.05.12 |