Мне нужно руководство о том, как извлечь первый (или) верхний каталог из заданного пути. Это включает в себя первую косую черту и последнюю косую черту. Например, в пути: «/chemicalemergencies/category/test-page1.html» мне нужно извлечь «/chemicalemergencies/». Я использовал str_extract и регулярное выражение для определения шаблона, но проблема в том, что он возвращает ЛЮБОЙ соответствовать. Это проблематично, если URL-адрес содержит повторяющиеся папки. Так, например, если путь «/chemicalemergencies/category/chemicalemergencies/test-page1.html», он вернет ОБА результата, когда мне нужен только первый. Как остановить обнаружение шаблона после первого совпадения в строке?
Sys.time()
#i=4
for (i in 1:nrow(wwwdevurls)) {
pathextract_wwwdev <- str_extract(wwwdevurls[i,3],"\/([A-z0-9]+)\/")
pathextract_wwwdev.df[i,1] <- pathextract_wwwdev #Load pathextract into pathextract.df
pathextract_wwwdev.df[i,2] <- wwwdevurls[i,1] #Load CIO into pathextract.df
}
Sys.time()
Спасибо - будет ли регулярное выражение "[^/]+" также захватывать начальную и конечную косые черты? Мне нужно, чтобы оба они вернулись в матче.
Затем используйте str_extract(wwwdevurls, "/[^/]+/")
или более явное str_extract(wwwdevurls, "^/[^/]+/")
Используйте ^[^/]*(/[^/]*/)
где первый каталог, заключенный в косую черту, находится в группе 1.
Если ваши пути всегда начинаются с косой черты, вы можете использовать:
sub("(/.*?/).*", "\\1", path)
"/chemicalemergencies/"
Используйте
str_extract(wwwdevurls, "(?<=^/)[^/]+")
или дажеstr_extract(wwwdevurls, "[^/]+")
.str_extract
ищет только одно совпадение.