首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用R中的REGEX提取a]

如何使用R中的REGEX提取a]
EN

Stack Overflow用户
提问于 2022-01-18 23:17:17
回答 3查看 52关注 0票数 0

我有一个列,它有很多行。该列的值类似于

测试数据123-独立,MO 99 *2-5 5PLT

我想写一个str_extract来提取所有的内容,所以输出应该是99 *2-5PLT。

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2022-01-18 23:21:21

这将起作用:

代码语言:javascript
运行
复制
a <- "[Testing Data 123-INDEPENDENCE, MO] 99 *2-5PLT"
str_extract(a, "(?<=\\] )(.*)")

[1] "99 *2-5PLT"

在这里,我们使用一个后置查找来查找结束括号(也是尾随空格),然后匹配后面的所有内容:

https://regex101.com/r/Aq9D1p/1

编辑,您还可以执行如下操作:

代码语言:javascript
运行
复制
a %>% str_split_fixed(., "] ", n = 2)

     [,1]                                 [,2]        
[1,] "[Testing Data 123-INDEPENDENCE, MO" "99 *2-5PLT"
票数 3
EN

Stack Overflow用户

发布于 2022-01-19 01:22:43

也是一个基本R解决方案:

代码语言:javascript
运行
复制
regmatches(a, regexpr("\\[[^[]*\\]\\s+\\K.*", a, perl = TRUE))

"99 *2-5PLT"
票数 1
EN

Stack Overflow用户

发布于 2022-01-19 02:02:11

你可以放下一切直到]

在基R中使用sub -

代码语言:javascript
运行
复制
x <- "[Testing Data 123-INDEPENDENCE, MO] 99 *2-5PLT"
sub('.*\\]\\s+', '', x)
#[1] "99 *2-5PLT"

类似地,对于stringr::str_remove -

代码语言:javascript
运行
复制
stringr::str_remove(x, '.*\\]\\s+')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70763546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档