r - 从后面开始提取最后一组数字的更短方法
问题描述
我想从字符串中提取最后一组数字而不这样做。
"sdkjfn45sdjk54()ad"
str_remove("sdkjfn45sdjk54()ad","[:alpha:]+$")
[1] "sdkjfn45sdjk54()"
str_remove(str_remove("sdkjfn45sdjk54()ad","[:alpha:]+$"), "\\(")
[1] "sdkjfn45sdjk54)"
str_remove(str_remove(str_remove("sdkjfn45sdjk54()ad","[:alpha:]+$"), "\\("), "\\)")
[1] "sdkjfn45sdjk54"
str_extract(str_remove(str_remove(str_remove("sdkjfn45sdjk54()ad","[:alpha:]+$"), "\\("), "\\)"), "\\d+$")
[1] "54"
因为模式是不确定的。我知道 stringi 有一个 str_extract_from_last 函数,但我需要坚持使用 base R 或 stringR。
谢谢!
解决方案
您可以使用负前瞻正则表达式。
string <- "sdkjfn45sdjk54()ad"
stringr::str_extract(string, '(\\d+)(?!.*\\d)')
#[1] "54"
在基础 R 中使用相同的正则表达式:
regmatches(string, gregexpr('(\\d+)(?!.*\\d)', string, perl = TRUE))[[1]]
这将提取后面没有任何数字的一组数字,所以最后一组数字。
推荐阅读
- javascript - 功能作为反应孩子无效?- 需要帮助将提取的数据提取到表中
- c# - XmlSerializer 序列化错误与 IIS/ASP.NET 中的继承类型但在桌面 .NET 应用程序中没有
- php - 当我需要同时显示帖子数据时,如何防止表单重新提交?
- docker - 运行容器后无法访问气流网络服务器
- powershell - 您能否帮助我使用脚本(在 Powershell 上制作)来删除超过 5 天的特定文件夹的文件(最终是子文件夹)?
- netlify - 网站不会部署使用 blogdown 创建的 hugo-academic 主题
- sql - 如何在 SELECT 语句中重命名和引用 COUNT(*)?
- assembly - 如何一次性使用8051的所有寄存器组?
- dart - sqflite 中的多个表
- bash - 将多个文件连接成一个没有标题的文件