I am not sure exactly what names you want to include and exclude. In the following code, column names can have a single number after the underscore.
DF <- data.frame(col.1_1 = 1, col.1_1id = 3,
col.1_2 = 2, col.1_2id = 5)
grep(pattern = "col.1_\\d$", colnames(DF), value = TRUE)
[1] "col.1_1" "col.1_2"