【问题标题】:gsub and remove all characters between < and > in Rgsub 并删除 R 中 < 和 > 之间的所有字符
【发布时间】:2017-07-31 11:37:53
【问题描述】:

我有一个字符串:

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] ""

【问题讨论】:

  • stringr:: word(a, 3, sep = '&gt;|&lt;')
  • 数据从何而来? gml 建议使用某种标记语言 - 可能有特定的工具可以读取此类数据。

标签: r regex gsub


【解决方案1】:

你可以使用

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

“”是文字,“[^>]”匹配任何不是“>”的字符,“+”允许一个或多个匹配。使用gsub 重复此匹配的次数与找到此模式的次数一样多。模式被空字符串“”替换。

【讨论】:

    【解决方案2】:
    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-22
      • 2021-11-29
      • 2014-02-27
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      相关资源
      最近更新 更多