r - 在正斜杠之前和之后提取数字之前/
问题描述
我无法在之前和之后提取字符串/
。
x <- c("maximusa/b=5/1","maximusa/b=-4/1","maximusa/b=3/-2")
before_slash=sub(".*=(\\d+).*","\\1", x, perl = TRUE)
给
"5" "maximusa/b=-4/1" "3"
然后
after_slash=sub("^.*\\/(d+)","\\1", x, perl = TRUE)
给
"maximusa/b=5/1" "maximusa/b=-4/1" "maximusa/b=3/-2"
OTH,预期输出
斜线前 5 -4 3
斜线后 1 1 -2
我怎样才能得到预期的输出?
谢谢你的答案,
我想再添加一个条件来提取字符串,假设我们有这样的字符串。与 OP 一样,我们如何使用+
符号提取并忽略括号?@mob 的当前解决方案给出了
x <- c("maximusa/b=(5/+1)","maximusa/b=(-4/1)","maximusa/b=(+3/-2)")
after_slash=sub("^.*/(\\d+)","\\1", x, perl = TRUE)
> after_slash
[1] "maximusa/b=(5/+1)" "1)" "maximusa/b=(+3/-2)"
和
before_slash=sub(".*=(-?\\d+).*","\\1", x, perl = TRUE)
> before_slash
[1] "maximusa/b=(5/+1)" "maximusa/b=(-4/1)" "maximusa/b=(+3/-2)"
我尝试了一些,但没有运气!
解决方案
一个问题是
after_slash=sub("^.*\\/(d+)","\\1", x, perl = TRUE)
应该
after_slash=sub("^.*/(\\d+)","\\1", x, perl = TRUE)
要捕获负整数,您还需要使用
before_slash=sub(".*=(-?\\d+).*","\\1", x, perl = TRUE)
after_slash=sub("^.*/(-?\\d+)","\\1", x, perl = TRUE)
标记的-?
意思是“-
字符,0 或 1 次”
推荐阅读
- node.js - 如何像 Google 文档一样在 quill 编辑器中执行跟踪更改?
- react-native - 无法在本机反应中读取未定义的属性“导航”这在应用程序 js 中正常工作,但在 about js 中却没有
- python - Spyder Editor - 如何禁用自动闭合括号
- python - 像 Jupyter 一样使用 Atom
- php - 如何将 MCRYPT 路径设置回 MAMP Pro
- c# - 在 .NET Framework 中将 Async/await 和 SqlDataReader 与 ExecuteReaderAsync 一起用于 ASMX Web 服务时出错
- angular - Angular 8 语言转换与谷歌 api.english 到印地语转换
- python - 如何修复我的第一个 python 代码?名称错误,未定义类名
- php - 使用 PHP 的 SQL Server 查询总是返回 Null
- javascript - 如果我将线宽设置为 6 以下,Fabric JS 不会让我在 microsoft edge 中画一个点