수색…


소개

subgsub 는 패턴을 사용하여 문자열을 편집하는 데 사용됩니다. 패턴 을 만드는 방법은 관련 함수와 정규 표현식 에 대한 자세한 내용은 패턴 일치 및 대체 를 참조하십시오.

캡처 그룹을 사용하여 문자열 재정렬

문자열의 순서를 변경하려면 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"

정규식에 대해 설명해 보겠습니다.

  1. (\\d+) : (1)로 구분되고 임의의 숫자 (적어도 하나)를 찾는 그룹 1. 문자 변수의 경우 백 슬래시가 리터럴 문자열 구분 기호 ( \" 또는 \' )에 대한 특수 이스케이프 문자를 나타 내기 때문에 이중 백 슬래시 ( \\ )를 사용해야 함을 기억하십시오. \d\[0-9] 와 같습니다.
  2. , : 구두점 기호 : , (공백이나 다른 구분 기호를 포함 할 수 있음)
  3. \\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