R Language
대체에 의한 문자열 수정
수색…
소개
sub
및 gsub
는 패턴을 사용하여 문자열을 편집하는 데 사용됩니다. 패턴 을 만드는 방법은 관련 함수와 정규 표현식 에 대한 자세한 내용은 패턴 일치 및 대체 를 참조하십시오.
캡처 그룹을 사용하여 문자열 재정렬
문자열의 순서를 변경하려면 pattern
괄호를 사용하여 문자열의 일부를 함께 그룹화 할 수 있습니다. 이들 그룹은 replacement
인수에서 연속 번호를 사용하여 추가 할 수 있습니다.
다음 예제에서는 "성, forename"양식의 이름 벡터를 "forename surname"양식의 벡터로 재정렬하는 방법을 보여줍니다.
library(randomNames)
set.seed(1)
strings <- randomNames(5)
strings
# [1] "Sigg, Zachary" "Holt, Jake" "Ortega, Sandra" "De La Torre, Nichole"
# [5] "Perkins, Donovon"
sub("^(.+),\\s(.+)$", "\\2 \\1", strings)
# [1] "Zachary Sigg" "Jake Holt" "Sandra Ortega" "Nichole De La Torre"
# [5] "Donovon Perkins"
성만 필요할 경우 첫 번째 괄호 쌍을 지정할 수 있습니다.
sub("^(.+),\\s(.+)", "\\1", strings)
# [1] "Sigg" "Holt" "Ortega" "De La Torre" "Perkins"
중복 된 연속 요소 제거
문자열에서 중복 된 서브 시퀀스 요소를 제거하고자한다고 가정 해 봅니다 (둘 이상일 수 있음). 예 :
2,14,14,14,19
그것을 다음으로 변환 :
2,14,19
gsub
사용하면 다음과 같이 구현할 수 있습니다.
gsub("(\\d+)(,\\1)+","\\1", "2,14,14,14,19")
[1] "2,14,19"
예를 들어, 다음과 같이 하나 이상의 다른 반복에도 적용됩니다.
> gsub("(\\d+)(,\\1)+", "\\1", "2,14,14,14,19,19,20,21")
[1] "2,14,19,20,21"
정규식에 대해 설명해 보겠습니다.
-
(\\d+)
: (1)로 구분되고 임의의 숫자 (적어도 하나)를 찾는 그룹 1. 문자 변수의 경우 백 슬래시가 리터럴 문자열 구분 기호 (\"
또는\'
)에 대한 특수 이스케이프 문자를 나타 내기 때문에 이중 백 슬래시 (\\
)를 사용해야 함을 기억하십시오.\d\
는[0-9]
와 같습니다. -
,
: 구두점 기호 :,
(공백이나 다른 구분 기호를 포함 할 수 있음) -
\\1
: 그룹 1과 동일한 문자열, 즉 반복되는 숫자. 그런 일이 발생하지 않으면 패턴이 일치하지 않습니다.
비슷한 상황을 시도해 보겠습니다. 연속되는 반복되는 단어를 제거하십시오.
one,two,two,three,four,four,five,six
그런 다음 \d
를 \w
. 여기서 \w
는 문자, 숫자 또는 밑줄을 포함하여 모든 단어 문자와 일치합니다. [a-zA-Z0-9_]
와 동일합니다.
> gsub("(\\w+)(,\\1)+", "\\1", "one,two,two,three,four,four,five,six")
[1] "one,two,three,four,five,six"
>
그런 다음, 위의 패턴은 특정 경우 중복 된 숫자의 경우를 포함합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow