3

你能帮助理解正则表达式的输出吗?我对低于 10 的文本位置感兴趣。但它显示了两个值,即 10 和 4。我如何仅捕获数字 10。

这个输出是数字向量吗?

text<-"World is beautiful"
out<-regexpr("beau",text)
out
#[1] 10
#attr(,"match.length")
#[1] 4
#attr(,"useBytes")
#[1] TRUE
out[1]
#[1] 10
out[2]
#[1] NA
4

2 回答 2

2

outlength 1L具有属性的原子向量...

str(out)
 atomic [1:1] 10
 - attr(*, "match.length")= int 4
 - attr(*, "useBytes")= logi TRUE

out(try c(out)to drop the attributes)的值10描述了字符向量中与您的模式匹配的起始位置。attr( out , "match.length")[1] 4描述匹配的长度。

您的text字符串是一个元素长,因此out是一个元素长。试试regexpr("beau",rep(text,3))

于 2013-10-15T14:04:36.437 回答
0

从 的帮助页面regexpr。您可以通过?regexpr在 R 控制台中输入来获取它。

regexpr返回一个与文本长度相同的整数向量,给出第一个匹配的起始位置,如果没有,则返回 -1,具有属性“match.length”,一个整数向量,给出匹配文本的长度(或 -1 表示不匹配)。匹配位置和长度以字符为单位,除非使用了 useBytes = TRUE,当它们以字节为单位时。如果使用命名捕获,则还有其他属性“capture.start”、“capture.length”和“capture.names”。

于 2013-10-15T14:04:28.830 回答