Шаблон ^
соответствует одному пробелу в начале строки, поэтому оба тестовых примера возвращают 1
.
Чтобы сопоставить последовательные пробелы в начале строки, вы можете использовать
stringr::str_count(string.1, "\\G ")
Или, для подсчета любых пробелов,
stringr::str_count(string.1, "\\G\\s")
См. Демонстрационную версию R
Шаблон \G
соответствует пробелу в начало и каждый пробел после успешного совпадения из-за якоря \G
.
Другой подход: подсчитать длину совпадений ^\s+
(1 или более пробельных символов в начале строка):
strings <- c(" starts with 4 spaces", " starts with only 2 spaces")
matches <- regmatches(strings, regexpr("^\\s+", strings))
sapply(matches, nchar)
# => 4 2