r - 在R中按开始和结束匹配文本
问题描述
我在 R 中做一个简单的网络抓取,但我有一个我无法解决的问题。
当我下载 webscode 时,我需要提取一系列位置(主要是国家名称)。
所以,我有这样的文字:
text <- " Agaon fasciatum Waterston (Life: Kingdom: Metazoa (animals); Phylum: Arthropoda; Class: Hexapoda; Order: Hymenoptera; Superfamily: Chalcidoidea; Family: Agaonidae; Genus: Agaon) Agaon fasciatum Waterston, 1914, Agaon tridentatum Joseph 1959. Holotype in The Natural History Museum, London. Type locality: Uganda. Distribution  Cameroon, Gabon, Guinea, Uganda, Zambia. Biology Host fig: Ficus cyathistipula cyathistipula Warb. References Waterston, J. 1914. Notes on African Chalcidoidea. I. Bulletin of Entomological Research. 5:249-258. Credits Photographs © Jean-Yves Rasplus (INRA) or © Simon van Noort (Iziko Museums of South Africa). Next genus: Alfonsiella       Next species: Agaon gabonense"
我需要提取分布,wchi 对应于表示国家列表末尾的fromdistribution
到 the的单词。 .
和
str_locate(string = text, pattern = "Distribution")
我可以检测到“分发”一词的位置。我现在可以通过某种".*\\."
方式检测到“。”但是当我尝试时
str_locate(string = text, pattern = "Distribution.*\\.")
我没有任何结果。
有什么解决办法吗?我现在这应该很容易,因为我在任何地方都找不到答案。
提前致谢,
安东尼奥
解决方案
碱基R
gsub(".*Distribution Â? *([^.]+)\\..*", "\\1", text)
# [1] "Cameroon, Gabon, Guinea, Uganda, Zambia"
### or
gsub(".*(Distribution Â? *[^.]+)\\..*", "\\1", text)
# [1] "Distribution  Cameroon, Gabon, Guinea, Uganda, Zambia"
或者
regmatches(text, gregexpr("Distribution Â? *[^.]+\\.", text))
# [[1]]
# [1] "Distribution  Cameroon, Gabon, Guinea, Uganda, Zambia."
如果您使用gsub
,请意识到如果没有找到,原件text
将被退回,不变。(所以只要检查一下newtext != text
以确保你找到了一些东西。)
弦乐
stringr::str_extract(text, "Distribution Â? *[^.]+\\.")
# [1] "Distribution  Cameroon, Gabon, Guinea, Uganda, Zambia."
如果您需要位置字符串索引,
stringr::str_locate(text, "Distribution Â? *[^.]+\\.")
# start end
# [1,] 320 375
推荐阅读
- sql-server - SQL 查询嵌套选择语法
- node.js - 在视图中获取节点模块的路径
- php - 如果我使用许多 html 文件和一个 php 文件,如何删除 .html 和 php 文件扩展名
- ios - 如何在 iOS 12 中自动(无需点击)将 3D 对象放置在水平面上?
- c# - 如何将 Console App 的代码块转换为 Azure Function 的代码块?
- select - 如何在 HIVE 的 CASE 语句中使用 SET 列表变量
- navigation - HERE 3D 场地导航
- python - Numpy:如何在张量上正确执行点积
- php - 如何验证用户密码并将用户数据回显为 json 字符串?
- ios - Swift iOS MapKit Polylines - 创建网格