vec <- "QTY+66:90:PCE\nSCC+2\nDTM+45:20200416:15\nQTY+66:60:PCE\nSCC+3\nDTM+35:20210614:2" sub(".*?\\+\\d+:(\\d+)[^\r\n]*[\r\n]+[^\r\n]*SCC\\+2.*", "\\1", vec) sub("(?s).*?\\+\\d+:(\\d+)(?-s).*\\R.*SCC\\+2(?s).*", "\\1", vec, perl=TRUE) library(stringr) str_extract(vec, "(?<=:)\\d+(?=[^\\d\r\n]*[\r\n]+.*SCC\\+2)")