Пример использования атрибута match.length, который возвращается из regexpr:
Три строки в векторе, первая и третья, включают встроенную строку:
data=c("<a href=\"ch4.html\">Chapter 1</a>",
"no quoted string is embedded in this string",
"<a href=\"appendix.html\">Appendix</a>")
Используйте regexpr для поискавстроенные строки:
> locations <- regexpr("\"(.*?)\"", data)
Совпадения в первой строке (9 с длиной 10) и третьей строке (11 с длиной 15):
> locations
[1] 9 -1 11
attr(,"match.length")
[1] 10 -1 15
attr(,"useBytes")
[1] TRUE
Вектор из атрибута:
> attr(locations,"match.length")
[1] 10 -1 15
Используйте substr и вектор атрибутов для извлечения строк:
> quoted_strings=substr( data,
locations,
locations+attr(locations,"match.length")-1 )
> quoted_strings
[1] "\"ch4.html\"" "" "\"appendix.html\""
Возможно, вы хотите удалить встроенные символы кавычек из строк:
> gsub("\"", "", quoted_strings)
[1] "ch4.html" "" "appendix.html"
Альтернативой является использование соответствия:
> regmatches(data,locations)
[1] "\"ch4.html\"" "\"appendix.html\""