2017-07-31 52 views
1

刪除< and >之間的所有字符我有一個​​字符串:GSUB和R中

a="<gml:posList srsDimension=\"2\" count=\"5\">7 -5.067 -3 56.7 -3.3 58.3 -5.65 57 -8.33</gml:posList>" 

,並希望GSUB的<和>之間的一切,到現在無濟於事至今。我想只剩下數字(即7 -5 -3 56 -3 58 ...),我可以在其中處理每個偶數/奇數元素。

我試圖Remove all text between two brackets無濟於事

> gsub('<^|*>','',a[[1]],perl=TRUE) 
Error in gsub("<^|*>", "", a[[1]], perl = TRUE) : 
    invalid regular expression '<^|*>' 
In addition: Warning message: 
In gsub("<^|*>", "", a[[1]], perl = TRUE) : PCRE pattern compilation error 
    'nothing to repeat' 
    at '*>' 

gsub('<gml.+>\\d','',a[[1]]) 

其切割移除第一個數字

我相信我缺少明顯的東西,如 '<' 不是一個特殊的角色。

這裏有一些其他的嘗試(和失敗)

> gsub('<.+>','',a[[1]]) 
[1] "" 
> gsub('<.+>.+<.+>','',a[[1]]) 
[1] "" 
> gsub('<gml.+>','',a[[1]]) 
[1] "" 
+0

'stringr :: word(a,3,sep ='> |'') – Sotos

+0

數據從哪裏來? 'gml'建議某種標記語言 - 可能有特定的工具來讀取這種類型的數據。 – user20650

回答

7

您可以使用

gsub("<[^>]+>", "",a) 
[1] "7 -5.067 -3 56.7 -3.3 58.3 -5.65 57 -8.33" 

「<」 和 「>」 的文字, 「[^>]」 的任何字符匹配不是「>」和「+」允許一個或多個匹配。使用gsub重複此匹配的次數爲找到此模式的次數。該模式被替換爲空字符串「」。

+0

完美。謝謝你的解釋! – alex

0
library(qdapRegex) 
a="<gml:posList srsDimension=\"2\" count=\"5\">7 -5.067 -3 56.7 -3.3 58.3 -5.65 57 -8.33</gml:posList>" 
rm_between(a, "<", ">", extract = T)