2014-02-10 2 views
4

다음과 같은 문자열이 있습니다.R 정규식

testSampe <- "Old:windows\r\nNew:linux\r\n" 

나는 ":""\" 사이의 문자열을 삭제합니다.

이와같이 "Old\r\nNew\r\n".

어떻게 정규식을 구성 할 수 있습니까?

정규식 ":.*\\\\"과 함께 gsub 함수를 시도했지만 작동하지 않습니다.

gsub(":.*\\\\", "\\\\r", testSampe) 
+0

@nhahtdh,'perl = TRUE'가 주어지지 않는 한''Old "'를 반환합니다. – falsetru

답변

4
> testSampe <- "Old:windows\r\nNew:linux\r\n" 
> gsub(":[^\r\n]*", "", testSampe) 
[1] "Old\r\nNew\r\n" 
+1

제 2의 해결책 만 지켜 져야한다고 생각합니다. '\ S'는 공백 (ASCII 32) 앞에 멈출 것입니다. – nhahtdh

+0

@nhahtdh, 네 말이 맞아. 나는 당신의 의견에 따라 첫번째 것을 제거했다. 고맙습니다. – falsetru

+0

감사합니다 – user2423434

2

당신은 일치하는 몇 가지 정규 표현식을 선택할 수 있습니다. , gsub에 더 읽기 대안으로

rx <- ":[[:alnum:]]*(?=\\r)" 

stringr 패키지에 str_replace_all를 사용 falsetru의 대답 또는 사용을 참조하십시오.

library(stringr) 
str_replace_all(testSampe, perl(rx), "")