R - 理解正则表达式的输出

时间:2013-10-15 13:56:18

标签: r

你能帮助理解regexpr的输出吗?我感兴趣的文字位置是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

2 个答案:

答案 0 :(得分:2)

out是一个length 1L原子向量,带有属性...

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

out(尝试c(out)删除属性)的值为10,它描述了字符向量中与模式匹配的起始位置。 attr( out , "match.length")[1] 4,描述了比赛的长度。

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

答案 1 :(得分:0)

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

  

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