我有一个字符串:
a="<gml:posList srsDimension=\"2\" count=\"5\">7 -5.067 -3 56.7 -3.3 58.3 -5.65 57 -8.33</gml:posList>"
并希望在&lt;之间gsub。和&gt;,到目前为止有效。我想只剩下数字(即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]])
哪些剪切删除了第一个数字
我确信我错过了一些明显的东西,因为'&lt;'不是一个特殊的角色。
以下是其他一些尝试(并失败)
> gsub('<.+>','',a[[1]])
[1] ""
> gsub('<.+>.+<.+>','',a[[1]])
[1] ""
> gsub('<gml.+>','',a[[1]])
[1] ""
答案 0 :(得分:9)
您可以使用
gsub("<[^>]+>", "",a)
[1] "7 -5.067 -3 56.7 -3.3 58.3 -5.65 57 -8.33"
“&LT;”和“&gt;”是文字,“[^&gt;]”匹配任何不是“&gt;”的字符并且“+”允许一个或多个匹配。使用gsub
重复此匹配的次数与找到此模式的次数相同。该模式由空字符串“”替换。
答案 1 :(得分: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)