尝试在 R 中使用正则表达式来捕获一些数据
Trying to use a regular expression in R to capture some data
所以我在 R 中有一个 table,我试图捕获的字符串示例是这样的:
C.Hale (79-83)
我想写一个正则表达式来提取 (79-83)。
我该怎么做?
我们可以使用sub
。我们从字符串 (^
) 的开头匹配一个或多个不是 space ([^ ]+
) 的字符,然后是 space (\s
) 并将其替换为 ''
.
sub('^[^ ]+\s', '', str1)
#[1] "(79-83)"
或者另一个选项是 stri_extract_all
来自 stringi
library(stringi)
stri_extract_all_regex(str1, '\([^)]+\)')[[1]]
#[1] "(79-83)"
数据
str1 <- 'C.Hale (79-83)'
使用我维护的 qdapRegex 包的一种可能性:
x <- "C.Hale (79-83)"
library(qdapRegex)
rm_round(x, extract = TRUE, include.markers = TRUE)
## [[1]]
## [1] "(79-83)"
所以我在 R 中有一个 table,我试图捕获的字符串示例是这样的:
C.Hale (79-83)
我想写一个正则表达式来提取 (79-83)。
我该怎么做?
我们可以使用sub
。我们从字符串 (^
) 的开头匹配一个或多个不是 space ([^ ]+
) 的字符,然后是 space (\s
) 并将其替换为 ''
.
sub('^[^ ]+\s', '', str1)
#[1] "(79-83)"
或者另一个选项是 stri_extract_all
来自 stringi
library(stringi)
stri_extract_all_regex(str1, '\([^)]+\)')[[1]]
#[1] "(79-83)"
数据
str1 <- 'C.Hale (79-83)'
使用我维护的 qdapRegex 包的一种可能性:
x <- "C.Hale (79-83)"
library(qdapRegex)
rm_round(x, extract = TRUE, include.markers = TRUE)
## [[1]]
## [1] "(79-83)"