If you want any columns that start 'abc' and any columns that end '789' you can use c(). If you want only the column names that start with 'abc' and end with '789', you can use a regular expression (regex) with matches().
library(dplyr)
x <- tibble(
`abc-123` = 1,
`abc*123` = 1,
`abc-789` = 1,
`abc*789` = 1,
`zyx-123` = 1,
`zyx*123` = 1,
`zyx-789` = 1,
`zyx*789` = 1
)
select(x, c(starts_with("abc"), ends_with("789")))
# A tibble: 1 × 6
`abc-123` `abc*123` `abc-789` `abc*789` `zyx-789` `zyx*789`
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 1 1 1 1
select(x, matches("^abc.*789$"))
# A tibble: 1 × 2
`abc-789` `abc*789`
<dbl> <dbl>
1 1 1
The regex here reads like 'strings that start (^) with abc, then have any number and type of characters, then end ($) with 789.