Я знаю, что есть несколько похожих вопросов, но они не помогли мне, возможно, из-за моего непонимания основ работы со строками.
У меня есть кусок строки, который я хочу извлечь из его первых квадратных скобок.
x <- "cons/mod2/det[4]/rost2/rost_act[2]/Q2w5"
Я просмотрел весь интернет, чтобы собрать следующий код, но он дает мне 2-ую скобку
sub(".*\\[(.*)\\].*", "\\1", x, perl=TRUE)
Код возвращает 2 . Я ожидаю получить 4 .
Буду признателен, если кто-то укажет на недостающую часть.
---- обновление ----
Замена .*
на .*?
в первых двух экземплярах сработала, но не знаю как. Я оставляю вопрос открытым для тех, кто может объяснить, почему это работает:
sub(".*?\\[(.*?)\\].*", "\\1", x, perl=TRUE)