r - 提取特定格式的部分字符串

我目前正在尝试破解 R 中看似简单的问题,但不知何故我无法找到使用 gsub 解决此问题的方法。 , str_match()或其他一些 rgex - 相关功能。谁能帮我解决这个问题?

问题 假设我有一个特定长度的列向量(比如 100)。向量中的每个元素都具有 [string]_[string+number]_[someinfo] 的形式.现在,我只想提取每个元素的第一部分,即 [string]_[string+number] . [string]_[string+number] 中字符数的潜在上限, 不包括 _ , 可以在 8 到 20 之间的任何位置,但没有固定的长度。我如何使用某些类型的 rgex在 R 中执行此操作的表达式?

x = c('XY_ABCD101_12_ACE', 'XZ_ACC122_100_BAN', 'XT_AAEEE100_12345_ABC', 'XKY_BBAAUUU124_100')

期望的输出。

x1 = c('XY_ABCD101', 'XZ_ACC122', 'XT_AAEEE100', 'XKY_BBAAUUU124')

最佳答案

我们可以使用 stringr 包中的 str_extract 和匹配的正则表达式来删除第二个下划线之后的所有内容:

library(stringr)
str_extract(x, "[^_]*_[^_]*")

[1] "XY_ABCD101"     "XZ_ACC122"      "XT_AAEEE100"    "XKY_BBAAUUU124"

https://stackoverflow.com/questions/72904012/

相关文章:

php - 在创建 PHP 类实例时运行代码?

ruby - Rails 将数组合并为数组的数组

perl - 如何将 Data::Dumper 输出转换回 Perl 数据结构?

.net - 不可变对象(immutable对象)的约定

perl - 为什么 Scalar::Util::Numeric 安装不正确?

r - 如何提取R中的第一个字符串

python - Julia 代码没有完成而 Python 代码完成了

sql - 如何在 SQL Server 2005 数据库中使用 T-SQL 用零填充 NVARCH

asp.net - 在 .net 中,是否有与 Server.HTMLEncode() 相反的函数?

android - 我正在尝试使用安全参数,但是当我将依赖项添加到项目级别 build.gradle