Обновлено решение вопроса
Кажется, вы хотите извлечь все вхождения букв 1+, за которыми следуют 4 цифры, а затем необязательная буква в квадратных скобках.
Используйте
test_text <- c("[]", "[1234]", "[1234a]", "[v1256a] ghjk kjh",
"[othername1256b] kjhgfd hgj",
"[v1256] ghjk kjh", "[v1256] kjhgfd hgj",
" text here [name1991] and here",
"[name1990] this is an explanation",
"[name1991] this is another explanation",
"[mäölk1234]")
regmatches(test_text, regexpr("\\[\\p{L}+[0-9]{4}\\p{L}?]", test_text, perl=TRUE))
# => c("[v1256a]", "[othername1256b]", "[v1256]", "[v1256]", "[name1991]",
# "[name1990]", "[name1991]", "[mäölk1234]")
См. R демо онлайн. ПРИМЕЧАНИЕ что вам нужно использовать регулярное выражение PCRE, чтобы это работало, perl=TRUE
имеет решающее значение здесь.
Детали
\[
- [
char
\p{L}+
- 1+ любые буквы Unicode
[0-9]{4}
- четыре цифры ASCII
\\p{L}?
- необязательная любая буква Unicode
]
- ]
char.
Оригинальный ответ
Используйте
regmatches(test_text, regexpr("\\[[^][]*[0-9]{4}[[:alpha:]]?]", test_text))
Или
regmatches(test_text, regexpr("\\[[^][]*[0-9]{4}[a-zA-Z]?]", test_text))
См. Демоверсию regex и график Regulex :

Детали
\[
- [
char
[^][]*
- 0 или более символов, отличных от [
и ]
( СОВЕТ : если вы ожидаете только буквы здесь, замените на [[:alpha:]]*
или [a-zA-Z]*
)
[0-9]{4}
- четыре цифры
[[:alpha:]]?
- дополнительная буква (или [a-zA-Z]?
будет соответствовать любой дополнительной букве ASCII)
]
- ]
char
R тест:
regmatches(test_text, regexpr("\\[[^][]*[0-9]{4}[[:alpha:]]?]", test_text))
## => [1] "[v1256a]" "[othername1256b]" "[v1256]" "[v1256]" "[name1991]" "[name1990]" "[name1991]"