[R] 정규표현식 관련
반응형
정규표현식(Regular Expressions)
- 정규표현식은 문자열의 패턴을 간결하게 기술하는 방식입니다.
- 특히 텍스트 데이터 분석을 할 경우에 문자열들의 패턴 등을 확인하기 위해 종종 쓰이고는 합니다.
\\
- 이 역슬래쉬(backslash) 문자를 정규표현식에서 자주 볼 수 있습니다.
\\
이후의 문자들은 일반 문자열을 받아들이지 않습니다.\\d
: d는 영어단어 d를 의미하는 것이 아닌 숫자를 의미\\s
: 공백을 의미- 기타 등등..
- 아래는 예시입니다.
str_view_all()
함수는 정규표현식에 매칭되는 결과물을 HTML로 보여주는 함수로 이해하시면 좋을 것 같습니다.
text <- c("가나다abc123,.!@#$%^&*()/?<>~+")
str_view_all(string = text, pattern = "d")
str_view_all(string = text, pattern = "\\d")
- 반대로 패턴을 의미하는 문자열에
\\
를 추가하면 일반 문자열로 받아들입니다.
str_view_all(string = text, pattern = ".")
str_view_all(string = text, pattern = "\\.")
일치하는 문자
임의의 요소 한 개: .
- 임의의 요소 하나 하나를 의미합니다. (new line은 예외)
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = "."
)
- 일반 문자열의 앞뒤 임의 요소와 매칭되는 케이스를 보려면 아래와 같습니다.
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = ".다."
)
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = ".a..."
)
.
를 일반 문자열로 취급하고자 한다면\\.
로 입력하셔야 합니다.
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = "\\."
)
특수 문자를 제외한 문자열 \\w
- 문자열 한 개
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = "\\w"
)
- 문자열 세 개
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = "\\w\\w\\w"
)
특수문자 및 숫자까지 제외한 문자열 [:alpha:]
- 문자열 한 개
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = "[:alpha:]"
)
- 문자열 세 개
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = "[:alpha:][:alpha:][:alpha:]"
)
영문 소문자 [:lower:]
, [a-z]
- 문자열 한 개
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = "[:lower:]"
)
str_view_all(
string = c("가나다abc123ef,.!@#$%^&*()/?<>~+"),
pattern = "[a-z]"
)
- 문자열 세 개
str_view_all(
string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
pattern = "[:lower:][:lower:][:lower:]"
)
영문 대문자 [:upper:]
, [A-Z]
- 문자열 한 개
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?<>~+"),
pattern = "[:upper:]"
)
str_view_all(
string = c("가나다abcABC123DEF,.!@#$%^&*()/?<>~+"),
pattern = "[A-Z]"
)
- 문자열 세 개
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?<>~+"),
pattern = "[:upper:][:upper:][:upper:]"
)
숫자 하나 \\d
, [:digit:]
, [0-9]
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?456<>~+789"),
pattern = "\\d"
)
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?456<>~+789"),
pattern = "[:digit:]"
)
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?456<>~+789"),
pattern = "[0-9]"
)
숫자 이외의 요소 \\D
, [^0-9]
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?456<>~+789"),
pattern = "\\D"
)
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?456<>~+789"),
pattern = "[^0-9]"
)
임의의 문자 또는 숫자 하나 [:alnum:]
- 느낌이
alpha
의al
과number
의num
이 섞인 것 같습니다.
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?456<>~+789"),
pattern = "[:alnum:]"
)
- 일반 문자와 임의의 문자 또는 숫자
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?456<>~+789"),
pattern = "C[:alnum:]"
)
구두점이 포함된 문자열 [:punct:]
str_view_all(
string = c("가나다abcABC123,.!@#$%^&*()/?456<>~+789"),
pattern = "[:punct:]"
)
구두점, 문자, 숫자가 포함된 문자열 (공백문자 미포함) [:graph:]
str_view_all(
string = c("가나다abcA BC123,.!@#$%^&*()/?456<>~+789"),
pattern = "[:graph:]"
)
문자열 내에서 특정 단어와 정확하게 일치하는 문자 \\b
str_view_all(
string = c("가나다", "나다", "나다라", "가나다라마"),
pattern = "\\b나다\\b"
)
공백 문자
줄바꿈 \n
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$%^&*()/?456<>~+789"),
pattern = "\n"
)
탭 한 번 \t
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$%^&*()/?456<>~+789"),
pattern = "\t"
)
스페이스를 포함한 공백문자 포함 \\s
, [:space:]
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$ %^&*()/ ?456<>~+789"),
pattern = "\\s"
)
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$ %^&*()/ ?456<>~+789"),
pattern = "[:space:]"
)
스페이스를 포함한 공백문자와 탭만 [:blank:]
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$ %^&*()/ ?456<>~+789"),
pattern = "[:blank:]"
)
대괄호 [ ]
[ ]
는 집합이나 범위를 표시합니다.
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$ %^&*()/ ?456<>~+789"),
pattern = "[나b2#]"
)
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$ %^&*()/ ?456<>~+789"),
pattern = "[a-c | A-B]"
)
대괄호 안에서 제외 조건 ^
- 대괄호 안에서의
^
기호는 해당 문자열들을 제외하는 역할을 합니다.
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$ %^&*()/ ?456<>~+789"),
pattern = "[^나다abC3]"
)
묶음 ( )
- 묶음은 소괄호
( )
로 표시하며 괄호안에 있는 문자열들은 하나의 요소로 취급됩니다.
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$ %^&*()/ ?456<>~+789"),
pattern = "(abc)"
)
문자열의 시작점 ^
- 위에서 설명드린 대괄호 안에서의
^
기호와 차이를 생각하셔야합니다. - 대괄호 없이
^
기호는 문자열의 시작점을 의미 합니다.
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$ %^&*()/ ?456<>~+789"),
pattern = "^가"
)
문자열의 종료점 $
- 대괄호 없이
$
기호는 문자열의 종료점을 의미 합니다.
str_view_all(
string = c("가나다\nabc\tABC\n123\t,.!@#$ %^&*()/ ?456<>~+789"),
pattern = "9$"
)
^
,$
두 개 기호를 사용하여 문자열 전체의 앞과 뒤를 지정할 수 있습니다.
str_view_all(
string = c("가나다", "나다", "나다라", "가나다라마"),
pattern = "^나다라$"
)
이어지거나 이어지지 않는 문자열
이어지는 문자열 (?=)
- 뒤에 “a”가 있는 “가나다”
str_view_all(
string = c("가나다abc가나다def"),
pattern = "가나다(?=a)"
)
- 뒤에 “a”가 없는 “가나다”
str_view_all(
string = c("가나다abc가나다def"),
pattern = "가나다(?!a)"
)
이어지지 않는 문자열 (?!=)
- 뒤에 “b”로 이어지지 않는 “가나다”
str_view_all(
string = c("가나다abc가나다def"),
pattern = "가나다(?!=b)"
)
앞에서 이어지는 문자열 (?<=)
- 앞에 “c”가 있는 “가나다”
str_view_all(
string = c("가나다abc가나다def"),
pattern = "(?<=c)가나다"
)
앞에서 이어지 않는 문자열 (?<!)
- 앞에 “c”가 없는 “가나다”
str_view_all(
string = c("가나다abc가나다def"),
pattern = "(?<!c)가나다"
)
반복 일치
선행 요소가 n개 일치 {n}
str_view_all(
string = c("가가가나다abc가가나다def"),
pattern = "가{3}"
)
선행 요소가 n개 이상 일치 {n,}
str_view_all(
string = c("가가가나다abc가가나다def"),
pattern = "가{2,}"
)
선행 요소가 n~m개 일치 {n,m}
str_view_all(
string = c("가가가나다abc가가나다def가가가가나다ghi"),
pattern = "가{3,4}"
)
반응형
'tidytext' 카테고리의 다른 글
[R] unnest_tokens() (0) | 2021.07.17 |
---|---|
[R] 2. Sentiment analysis with tidy data (0) | 2021.07.17 |
[R] stringr 문자열 관련 처리 함수 (0) | 2021.07.14 |
[R] 1. Tidy text format (0) | 2021.07.14 |
[R] 텍스트 데이터 분석을 위한 라이브러리 준비 (0) | 2021.07.14 |
TAGS.