2011-08-14 2 views
5

문자열 아래처럼이 있다고 가정하자 : 나는 모두 <a><c>을 제거 할가 R에 GSUB를 사용하여 한 쌍의 괄호 안에 아무것도 제거

<a>b<c> 

, 그러나 이것은 b을 제거하므로 나는 gsub("<.*>","","<a>b<c>")을 사용할 수 없습니다 또한.

나는 이전에 비슷한 질문을했지만 두 번째 생각에 나는 이런 종류의 문제를 다루는 방법을 일반적으로 배워야한다고 생각한다. 감사.

+1

더 일반적인 해결 방법은 파서를 사용하는 것입니다. 이스케이프 된 심볼이 없는지, 모든 심볼이 일치하는지, 중첩이 발생하지 않는지, 그리고 다른 많은 경고가 있는지를 확신 할 수 없다면, 파서를 사용하는 것이 가장 좋습니다. 그래서 정규 표현식과 HTML에 관한 아주 유명한 질문이 있습니다. HTML을 언급하지는 않았지만 HTML 및 XML과 같은 마크 업 언어의 방향으로 나아갈 수있는 것처럼 보입니다. – Iterator

답변

11

는 괄호 안에 물건에 닫는 대괄호 >을 허용하지 마십시오 시끄러운 설정에서

z <- "<a>b<c>" 
gsub("<[^>]+>","",z) 
4

욕심이없는 정규식을 사용할 수 있습니다 (예 : /<.*?>/.

이것은 단순한 HTML에서만 작동하며 쉽게 전복 될 수 있습니다. 정규식을 사용하여 쉽게 제거 할 수없는 다음 HTML을 고려하십시오.

<span title="Help > Index"> 
+0

아니, 확인되지 > GSUB ("/ <.*> /", "", " B ") [1] "는 B 는" – lokheart

+3

당신은 놓친 '을?' 정규식에서. –

4

한 번 더 생각이 종종 매우 유용 (즉,이 토크 나이를 만들기 위해 가까이 올 때) :

strsplit("<a>b<c>",split='<|>')[[1]][3] 
관련 문제