r - 如何提取特定字符串之后的所有内容?
问题描述
我想在 R 中的字符串向量中提取“-”之后的所有内容。
例如在:
test = c("Pierre-Pomme","Jean-Poire","Michel-Fraise")
我想得到
c("Pomme","Poire","Fraise")
谢谢 !
解决方案
与str_extract
. \\b
是与词边界匹配的零长度标记。这包括任何非单词字符:
library(stringr)
str_extract(test, '\\b\\w+$')
# [1] "Pomme" "Poire" "Fraise"
我们也可以使用反向引用sub
。\\1
指由第一个捕获组匹配的字符串(.+)
,它是任何字符一次或多次后跟-
在末尾:
sub('.+-(.+)', '\\1', test)
# [1] "Pomme" "Poire" "Fraise"
str_replace
如果已经加载,这也适用:
library(stringr)
str_replace(test, '.+-(.+)', '\\1')
# [1] "Pomme" "Poire" "Fraise"
第三个选项是使用strsplit
并从列表的每个元素中提取第二个单词(类似于word
@akrun 的答案):
sapply(strsplit(test, '-'), `[`, 2)
# [1] "Pomme" "Poire" "Fraise"
stringr
对此也有 str_split
变体:
str_split(test, '-', simplify = TRUE)[,2]
# [1] "Pomme" "Poire" "Fraise"
推荐阅读
- r - 如何在 Google Colab 的 Jupyter notebook 中使用 R 运行 plotly 包
- typescript - NextJS、Storybook、SVG 和绝对导入路径
- java - 如何使用 selenium 多次运行同一个类
- javascript - 在 JavaScript 中创建 onclick 类的新实例的正确方法是什么?
- c# - 部分类在内部与常规类不同吗?
- java - 使用带有thymeleaf的spring boot在java中将用户添加到数据库的问题
- csv - 将 CSV 读取到 Neo4j,每列和关系创建一个节点
- java - 如何在 IntelliJ 文档中显示类的公共方法?
- javascript - 为什么 import 关键字在 react 中起作用,而不是在普通的 npm init 项目中?
- reactjs - React DataGrid 列显示隐藏