程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从后面开始提取最后一组数字的较短方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从后面开始提取最后一组数字的较短方法?

开发过程中遇到从后面开始提取最后一组数字的较短方法的问题如何解决?下面主要结合日常开发的经验,给出你关于从后面开始提取最后一组数字的较短方法的解决方法建议,希望对你解决从后面开始提取最后一组数字的较短方法有所启发或帮助;

我想从字符串中提取最后一组数字而不这样做。

"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","\\("),"\\)")
[1] "sdkjfn45sdjk54"

str_extract(str_remove(str_remove(str_remove("sdkjfn45sdjk54()ad","\\)"),"\\d+$")
[1] "54"
@H_675_6@

因为模式是不确定的。我知道 Stringi 有一个 str_extract_from_last 函数,但我需要坚持使用 base R 或 StringR。

谢谢!

解决方法

您可以使用负前瞻正则表达式。

String <- "sdkjfn45sdjk54()ad"
Stringr::str_extract(String,'(\\d+)(?!.*\\d)')
#[1] "54"
@H_675_6@

在基础 R 中使用相同的正则表达式:

regmatches(String,gregexpr('(\\d+)(?!.*\\d)',String,perl = TRUE))[[1]]
@H_675_6@

这将提取后面没有任何数字的一组数字,因此是最后一组数字。

,

使用 str_extract_all@H_675_6@ 并只抓取每个向量中的最后一个。

library(Stringr)
quux <- str_extract_all(c("a","sdkjfn45sdjk54()ad"),"[0-9]+")
sapply(quux,`[`,lengths(quuX))
# [1] NA   "54"
@H_675_6@

我使用 sapply@H_675_6@ 是因为我猜您有多个字符串。 str_extract_all@H_675_6@ 将返回一个 list@H_675_6@,其中每个元素是从源中提取的零个或多个字符串。由于我们只对其中之一感兴趣,我们可以使用 sapply@H_675_6@。

人们可能会想使用 sapply(.,tail,1)@H_675_6@,但如果找到零,那么它将character(0)@H_675_6@,而不是空或 NA@H_675_6@。我推断当找不到模式时 NA@H_675_6@ 将是一个不错的回报。

大佬总结

以上是大佬教程为你收集整理的从后面开始提取最后一组数字的较短方法全部内容,希望文章能够帮你解决从后面开始提取最后一组数字的较短方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: