R 정규표현식 – 특수문자

문자열의 패턴을 간결하게 기술하는 방식을 정규표현식이라고 합니다. 특정 패턴의 텍스트 분석을 하기 위해서는 해당 표현을 이해하고 작성할 수 있어야 코드양과 비용과 시간을 줄일 수 있습니다. 이제 정규표현식에 대해 살펴보겠습니다.

일반적인 텍스트 마이닝 정규표현식은 여기 링크를 참고바랍니다.

\\ 의미

  • \\ 이후의 문자가 나올 시 의미를 아래의 예시를 들어 설명하겠습니다.
  • \\d : d는 영어단어 ‘d’가 아닌 숫자를 의미합니다. digit의 앞자 d를 의미합니다.
  • \\s : space 공백을 의미합니다.
str_split(
  string = c("가나다\\nabc\\tABC\\n123\\t,.!@#$  %^&*()/ ?456<>~+789"),
  pattern = "\\d"
)

# Output
[[1]] 
[1] "가나다\\nabc\\tABC\\n"  ""                    ""                    "\\t,.!@#$  %^&*()/ ?" ""                    ""                    
[7] "<>~+"                ""                    ""                    ""
str_split(
  string = c("가나다\\nabc\\tABC\\n123\\t,.!@#$  %^&*()/ ?456<>~+789"),
  pattern = "d"
)

#Output
[[1]
[1] "가나다\\nabc\\tABC\\n123\\t,.!@#$  %^&*()/ ?456<>~+789"
str_split(
  string = c("가나다\\nabc\\tABC\\n123\\t,.!@#$  %^&*()/ ?456<>~+789"),
  pattern = "."
)

#Output
[[1]] 
[1] ""   ""   ""   "\\n" ""   ""   ""   ""   ""   ""   "\\n" ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""  
[30] ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""
str_split(
  string = c("가나다\\nabc\\tABC\\n123\\t,.!@#$  %^&*()/ ?456<>~+789"),
  pattern = "\\."
)

#Output
[[1]]
[1] "가나다\\nabc\\tABC\\n123\\t,"  "!@#$  %^&*()/ ?456<>~+789"

공백 문자

  • [:blank:]
    • 스페이스를 포함한 공백문자와 탭만
str_split(
  string = c("가나다\\nabc\\tABC\\n123\\t,.!@#$  %^&*()/ ?456<>~+789"),
  pattern = "[:blank:]"
)

# Output
[[1]]
[1] "가나다\\nabc" "ABC\\n123"    ",.!@#$"      ""            "%^&*()/"     "?456<>~+789"
  • \\s, [:space:]
    • 스페이스를 포함한 공백문자 포함
str_split(
  string = c("가나다\\nabc\\tABC\\n123\\t,.!@#$  %^&*()/ ?456<>~+789"),
  pattern = "\\\\s"
)

# Output
[[1]]
[1] "가나다"      "abc"         "ABC"         "123"         ",.!@#$"      ""            "%^&*()/"     "?456<>~+789"
str_split(
  string = c("가나다\\nabc\\tABC\\n123\\t,.!@#$  %^&*()/ ?456<>~+789"),
  pattern = "[:space:]"
)

# Output
[[1]]
[1] "가나다"      "abc"         "ABC"         "123"         ",.!@#$"      ""            "%^&*()/"     "?456<>~+789"
  • \n
    • 줄바꿈
str_split(
  string = c("가나다\\nabc\\tABC\\n123\\t,.!@#$%^&*()/?456<>~+789"),
  pattern = "\\n"
)
# Output
[[1]]
[1] "가나다"                        "abc\\tABC"                      "123\\t,.!@#$%^&*()/?456<>~+789"
  • \t
    • 탭 한 번
str_split(
  string = c("가나다\\nabc\\tABC\\n123\\t,.!@#$%^&*()/?456<>~+789"),
  pattern = "\\t"
)

# Output
[[1]]
[1] "가나다\\nabc"              "ABC\\n123"                 ",.!@#$%^&*()/?456<>~+789"

임의의 문자 패턴

  • 임의의 문자와 매칭되는 패턴을 확인합니다.
str_split(
  string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
  pattern = ".다."
)

#Output
[[1]]
[1] "가"                      "bc123,.!@#$%^&*()/?<>~+"
str_split(
  string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
  pattern = ".a..."
)

#Output
[[1]]
[1] "가나"                 "23,.!@#$%^&*()/?<>~+"

특수 문자 제외한 문자열

# 문자열 한 개
str_split(
  string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
  pattern = "\\\\w"
)

#Output
[[1]] 
[1] ""                   ""                   ""                   ""                   ""                   ""                   
[7] ""                   ""                   ""                   ",.!@#$%^&*()/?<>~+"
# 문자열 세 개
str_split(
  string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
  pattern = "\\\\w\\\\w\\\\w"
)

[[1]]
[1] ""                   ""                   ""                   ",.!@#$%^&*()/?<>~+"

특수문자 및 숫자 제외한 문자열

  • [:alpha:]
# 문자열 한 개
str_split(
  string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
  pattern = "[:alpha:]"
)
#Output
[[1]]
[1] ""                      ""                      ""                      ""                      ""                      ""                     
[7] "123,.!@#$%^&*()/?<>~+"

# 문자열 세 개
str_split(
  string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
  pattern = "[:alpha:][:alpha:][:alpha:]"
)
#Output
[[1]]
[1] ""                      ""                      "123,.!@#$%^&*()/?<>~+"

영문 소문자

  • [:lower:], [a-z]
# 문자열 한 개
str_split(
  string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
  pattern = "[:lower:]"
)

# Output
[[1]]

[1] "가나다"                ""                      ""                     
[4] "123,.!@#$%^&*()/?<>~+"
str_split(
  string = c("가나다abc123ef,.!@#$%^&*()/?<>~+"),
  pattern = "[a-z]"
)

# Output
[[1]]
[1] "가나다"             ""                   ""                  
[4] "123"                ""                   ",.!@#$%^&*()/?<>~+"
# 문자열 세 개
str_split(
  string = c("가나다abc123,.!@#$%^&*()/?<>~+"),
  pattern = "[:lower:][:lower:][:lower:]"
)

# Output
[[1]]
[1] "가나다"                "123,.!@#$%^&*()/?<>~+"

영문 대문자

# 문자열 한 개
str_split(
  string = c("가나다abcABC123,.!@#$%^&*()/?<>~+"),
  pattern = "[:upper:]"
)

[[1]]
[1] "가나다abc"             ""                      ""                     
[4] "123,.!@#$%^&*()/?<>~+"
str_split(
  string = c("가나다abcABC123DEF,.!@#$%^&*()/?<>~+"),
  pattern = "[A-Z]"
)

[[1]]
[1] "가나다abc"          ""                   ""                  
[4] "123"                ""                   ""                  
[7] ",.!@#$%^&*()/?<>~+"
# 문자열 세 개
str_split(
  string = c("가나다abcABC123,.!@#$%^&*()/?<>~+"),
  pattern = "[:upper:][:upper:][:upper:]"
)

[[1]]
[1] "가나다abc"             "123,.!@#$%^&*()/?<>~+"
Back to top