안녕하세요.
오늘 R에서 정규 표현식을 표현하는 함수정리하는 시간을 갖도록 하겠습니다.
R의 정규 표현식에 대한 함수 및 예제
▣ R 정규표현식의 기능 요약
- str_detect(): 이 함수는 확인에 사용됩니다.
문자열에 패턴이 있는 경우. 패턴이 발견되었는지 여부를 나타내는 논리값(TRUE 또는 FALSE)을 반환합니다. - str_subset(): 이 함수는 추출에 사용됩니다.
문자열에서 일치시킬 패턴입니다.
일치하는 패턴을 문자열로 반환합니다. - str_extract(): 이 함수는 문자열에서 패턴의 첫 번째 일치 항목을 추출하는 데 사용됩니다.
일치하는 첫 번째 패턴을 문자열로 반환합니다. - str_extract_all(): 이 함수는 문자열에서 일치하는 패턴을 모두 추출하는 데 사용됩니다.
일치하는 모든 패턴을 포함하는 문자형 벡터를 반환합니다. - str_replace(): 이 함수는 문자열의 패턴을 다른 문자열로 바꾸는 데 사용됩니다.
. 교체된 패턴으로 수정된 문자열을 반환합니다. - str_split(): 이 함수는 패턴에 따라 문자열을 조각으로 분할하는 데 사용됩니다.
슬라이스 조각을 항목으로 포함하는 목록을 반환합니다. - str_count(): 이 함수는 패턴이 일치하는 횟수를 세는 데 사용됩니다.
선. 일치하는 수를 나타내는 정수 값을 반환합니다.
: 메타문자 모음
메타문자 | 세부 사항 |
“^” | 문자열의 시작 |
“$” | 문자열의 끝 |
“.” | 각 개별 문자의 의미, 단독으로 사용될 때 각 문자 |
“?” | 앞이나 뒤의 아니오 또는 특정 문자 |
“|” | 또는 (또는) 의미 |
“+” | 1개 이상의 이전 문자 |
“*” | 0개 이상의 이전 문자 |
“()” | 각각 OR 의미를 갖는 문자 그룹으로 표현 |
“{n,m}” | n 이상 m 이하 (생략 가능) |
“()” | 문자와 의미의 그룹화를 통해 표현 |
“\” | 메타 문자 대신 리터럴로 만들기 위해 이스케이프 문자 |
※ 이스케이프 문자
\ + 일반 문자 | 의미 |
\N | 새 줄 |
\티 | 탭 |
\에스 | 갭 |
\에스 | 비어있지 않다 |
\디 | 숫자 |
\디 | 번호 없음 |
\w | 소식 |
\W | 문자하지마 |
\비 | 단어 경계 |
※ 특수 표현
(::) | 의미 |
(:숫자:) | 숫자 |
(:알파:) | 소식 |
(:낮추다:) | 소문자 |
(:위, 위 🙂 | 대문자 |
(:alnum:) | 문자 + 숫자 |
(:가리키다:) | 징후 |
(:그래프:) | 문자 + 숫자 + 기호 |
(:공간:) | 거리 |
(:비어 있는:) | 스페이스 + 탭 |
: 간단한 정규표현식 예시
# 과일 이름 벡터에서 "사과"라는 단어를 포함하는 요소 검색
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"