在R中,有没有比下面更好/更简单的方法来查找字符串中最后一个点的位置?

x <- "hello.world.123.456"
g <- gregexpr(".", x, fixed=TRUE)
loc <- g[[1]]
loc[length(loc)]  # returns 16

这会找到字符串中的所有点,然后返回最后一个点,但它似乎相当笨拙.我试着使用正则表达式,但没有成功.

推荐答案

这对你有用吗?

x <- "hello.world.123.456"
g <- regexpr("\\.[^\\.]*$", x)
g
  • \.匹配一个点
  • [^\.]与所有匹配,但不匹配一个点
  • *指定上一个表达式(除了点以外的所有表达式)可能出现在0到无限次之间
  • $表示字符串的结束.

把所有的东西放在一起:找到一个点,后面跟一个点,直到字符串结束.R要求转义\,因此在上面的表达式中为\\.请参见regex\.com以试验正则表达式.

R相关问答推荐

根据列中的数字移动单元格位置

如何将log 2刻度上的数字转换为自然log

用单个表达匹配多个替代模式

通过绘图 Select 线串几何体并为其着色

R形式的一维数字线/箱形图样式图表

如何删除R中除某些特定名称外的所有字符串?

无法将传奇添加到cowplot多情节中

然后根据不同的列值有条件地执行函数

如何改变x轴比例的列在面

R函数‘paste`正在颠倒其参数的顺序

将Posict转换为数字时的负时间(以秒为单位)

哪一行和行和 Select 特定行,但是考虑到Nas

方法::slotName如何处理非类、非字符的参数?

将一个字符串向量调整为与其他字符串向量完全相同的大小

如何从容器函数中提取conf并添加到ggplot2中?

过滤名称以特定字符串开头的文件

根据另一列中的值和条件查找新列的值

层次树图的数据树

R中治疗序列的相对时间指数

组合名称具有模式的列表的元素