【问题标题】:Problems pattern matching using R regular expressions使用 R 正则表达式的模式匹配问题
【发布时间】:2017-07-14 14:20:46
【问题描述】:

我正在尝试使用 str_extract 提取字符串。下面是字符串类型的一个小例子:

library(stringr)
gs<-"{\"type\":\"Polygon\",\"coordinates\":[[[1,2],[3,4],[5,6],[7,8]]]}"

s='\\{\\\"type\\\"*\\}'

str_extract(gs,s)

我想打印出整个字符串(真正的字符串会有更多这种类型的字符,并且应该只返回我在此处指定的部分)。相反,我得到了 NA。对于我做错的任何想法,我将不胜感激。谢谢!

【问题讨论】:

  • 你的预期输出是什么?
  • 您能否详细说明您要做什么?现在,您似乎想从另一个不包含该文本的字符串中提取字符串 '\\{\\\\"type\\\\"*\\' 。因此它返回 NA。
  • 不是 JSON 吗?如果是,请使用 JSON 解析器来获取您需要的值。
  • 我想从字符串 gs 中提取从 '"{\"type\"' 到 '}' 的所有内容(称为 s)。我认为顺序是正确的。它是 geoJSON,在一个 JSON 字符串。不幸的是,解析器将 geoJSON 转换为一种格式,这使得将数据更难获取到 wkt 中,这是最终目标。

标签: r regex stringr


【解决方案1】:

这是你想要的吗?

gs<-"{\"type\":\"Polygon\",\"coordinates\":[[[1,2],[3,4],[5,6],[7,8]]]} I DO NOT WANT THIS {\"type\":\"Not a Polygon\",\"coordinates\":[[[1,2],[3,4],[5,6],[7,8]]]}"
s="\\{\"type\"(.*?)\\}"
result = str_match_all(gs,s)[[1]][,1]

为了测试,我添加了不应返回的字符串“I DO NO WANT THIS”,并添加了第二个类型为“不是多边形”的对象

返回:

"{\"type\":\"Polygon\",\"坐标\":[[[1,2],[3,4],[5,6],[7,8]]] }"
"{\"type\":\"不是 多边形\",\"坐标\":[[[1,2],[3,4],[5,6],[7,8]]]}"

所以只有请求的元素。希望这会有所帮助!

【讨论】:

  • 是的!非常感谢 :) 我仍然不确定为什么我的原始方法失败了,但我会尝试解决这个问题。非常感谢!
  • @user8119260 如果这个答案有帮助,请点赞。如果它确实回答了问题,请接受它作为答案。见What should I do when someone answers my question?
  • 谢谢,我确实支持它,但遗憾的是它没有显示,因为我对这个网站很陌生。我已经接受它作为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 2011-07-17
相关资源
最近更新 更多