regmatches()
regexpr
,仅从 R-2.14.0 开始可用,允许您“从通过,gregexpr
或获得的匹配数据中提取或替换匹配的子字符串regexec
”
以下是如何使用示例regmatches()
来提取输入字符串中的第一个空白缓冲 4 位子字符串或所有此类子字符串。
## Example strings and pattern
x <- "coihr 1234 &/()= jngm 34 ljd" # string with 1 matching substring
xx <- "coihr 1234 &/()= jngm 3444 6789 ljd" # string with >1 matching substring
pat <- "(?<=\\s)(\\d{4})(?=\\s)"
## Use regexpr() to extract *1st* matching substring
as.numeric(regmatches(x, regexpr(pat, x, perl=TRUE)))
# [1] 1234
as.numeric(regmatches(xx, regexpr(pat, xx, perl=TRUE)))
# [1] 1234
## Use gregexpr() to extract *all* matching substrings
as.numeric(regmatches(xx, gregexpr(pat, xx, perl=TRUE))[[1]])
# [1] 1234 3444 6789
(请注意,这将返回numeric(0)
不包含与您的条件匹配的子字符串的字符串)。