a<-"GET /News.html HTTP/1.0 feed.html HTTP/2.0"
b<-regexpr(".html",a);b
[1] 10
attr(,"match.length")
[1] 5
attr(,"useBytes")
[1] TRUE
通过regexpr(".html",a),系统返回如下信息:
在字符串a中,第一个和字符串".html"匹配的起始位置为10。可以使用b[1]来直接读取。
在字符串a中,第一个和字符串".html"匹配的字符长度为5。可以使用attr(b,"match.length")或者b[[2]]来直接读取。
在字符串a中是否有字符串与".html"匹配,答案为TRUE。可以使用attr(b,"useBytes")来直接读取。
由上例可知,regexpr()函数只查询匹配第一个特定字符,要想多次匹配需要使用gregexpr()函数。例如:
a<-"GET /News.html HTTP/1.0 feed.html HTTP/2.0"
b<-gregexpr(".html",a);b
[[1]]
[1] 10 29
attr(,"match.length")
[1] 5 5
attr(,"useBytes")
[1] TRUE
注意
返回的b是一个列表,在直接读取起始位置时,可以使用b[[1]][1]来表示第一次匹配的起始位置,返回值是10。使用b[[1]][2]表示第2次匹配的起始位置,返回值是29。在直接读取匹配字符串长度时,可以使用attr(b[[1]],"match.length")以向量形式返回两次匹配的字符串长度。