본문 바로가기
Programming/R

[R] 정규표현식 함수 및 예시

by 코딩하는 금융인 2023. 3. 1.

안녕하세요.

오늘은 R로 정규표현식을 표현하는 함수들에 대해 정리해보는 시간을 가져보겠습니다.

 

 R 정규표현식 함수 및 예제

▣ 정규표현식 함수 정리 in R

  1. str_detect(): 이 함수는 확인하는 데 사용됩니다. 문자열에 패턴이 있는 경우. 패턴이 발견되었는지 여부를 나타내는 논리 값(TRUE 또는 FALSE)을 반환합니다.
  2. str_subset(): 이 함수는 추출하는 데 사용됩니다. 문자열에서 일치하는 패턴. 일치하는 패턴을 문자열로 반환합니다.
  3. str_extract(): 이 함수는 문자열에서 패턴의 첫 번째 일치를 추출하는 데 사용됩니다. 첫 번째로 일치하는 패턴을 문자열로 반환합니다.
  4. str_extract_all(): 이 함수는 문자열에서 패턴의 모든 일치 항목을 추출하는 데 사용됩니다. 일치하는 모든 패턴이 포함된 문자 벡터를 반환합니다.
  5. str_replace(): 이 함수는 문자열의 패턴을 다른 문자열로 바꾸는 데 사용됩니다. . 패턴이 교체된 수정된 문자열을 반환합니다.
  6. str_split(): 이 함수는 패턴을 기반으로 문자열을 조각으로 분할하는 데 사용됩니다. 분할된 조각을 요소로 포함하는 목록을 반환합니다.
  7. str_count(): 이 함수는 패턴의 일치 수를 세는 데 사용됩니다. 문자열. 일치하는 수를 나타내는 정수 값을 반환합니다.

 

: 메타문자 모음

메타문자 내용
"^" 문자열의 시작지점
"$" 문자열의 끝지점
"." 임의의 한 글자 의미, 단독 사용시 모든 문자
"?" 앞뒤 지정된 문자가 없거나 하나 있음
"|" OR(또는) 의미
"+" 앞 문자 1개 이상
"*" 앞 문자 0개 이상
"[]" 문자 묶어서 표현, 각각 OR 의미
"{n,m}" 앞 문자 n개 이상, m개 이하 (생략 가능)
"()" 문자 묶어서 표현, AND 의미
"\" 메타문자가 아닌 문자 그대로 만들어주는 이스케이프 문자

 

※ 이스케이프 문자

\ + 일반문자 의미
\n 줄바꿈
\t
\s 공백
\S 공백아님
\d 숫자
\D 숫자아님
\w 문자
\W 문자아님
\b 단어경계

 

※ 특수표현

[: : ] 의미
[:digit:] 숫자
[:alpha:] 문자
[:lower:] 소문자
[:upper:] 대문자
[:alnum:] 문자+숫자
[:punct:] 기호
[:graph:] 문자+숫자+기호
[:space:] 띄어쓰기
[:blank:] 띄어쓰기+탭

 

: 간단한 정규표현식 예시

# 과일 이름 벡터에서 "사과"라는 단어를 포함하는 요소 검색
fruit <- c("apple", "banana", "orange", "grape")
grep("apple", fruit)
# Output: 1

# 문자열에서 모든 "cat" 단어를 "dog"로 바꾸기 (replace)
text <- "I have a cat named Fluffy and another cat named Mittens."
gsub("cat", "dog", text)
# Output: "I have a dog named Fluffy and another dog named Mittens."

# 문자열에서 "cat"라는 단어의 첫 번째 항목을 "dog"로 바꾸기
text <- "I have a cat named Fluffy and another cat named Mittens."
sub("cat", "dog", text)
# Output: "I have a dog named Fluffy and another cat named Mittens."

# 문자열에서 "사과"라는 단어의 위치 찾기
text <- "I like to eat apples."
regexpr("apple", text)
# Output: 17

# 문자열에서 유효한 전자 메일 주소의 패턴과 일치하는 모든 하위 문자열 찾기
text <- "My email is john@example.com and my friend's email is jane@example.com."
regmatches(text, gregexpr("\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b", text, perl = TRUE))
# Output: "john@example.com" "jane@example.com"

 

반응형

댓글