使用regexpr()gregexpr()和函数读取字符串内的特定字符串

来源:互联网 发布:淘宝uv pv什么意思 编辑:程序博客网 时间:2024/06/08 11:07
regexpr(pattern,text)函数可以在字符串x中提取出特定字符串pattern的相关信息。其中pattern可以是字符串,也可以是一个正则表达式。例如:

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")以向量形式返回两次匹配的字符串长度。

0 0