Try this base R work. You only "need" the first and last lines of this block, the rest are "building".
ptns <- data.frame(RACE=c("White", "Black"), ptn = c("(white|caucas)", "black"))
sapply(ptns$ptn, grepl, x = dat$TEST_CODE, ignore.case = TRUE)
# (white|caucas) black
# [1,] TRUE FALSE
# [2,] TRUE FALSE
# [3,] FALSE TRUE
# [4,] FALSE TRUE
# [5,] FALSE FALSE
# [6,] TRUE FALSE
# [7,] FALSE TRUE
# [8,] TRUE FALSE
# [9,] FALSE TRUE
apply(sapply(ptns$ptn, grepl, x = dat$TEST_CODE, ignore.case = TRUE), 1, which.max)
# [1] 1 1 2 2 1 1 2 1 2
ptns$RACE[apply(sapply(ptns$ptn, grepl, x = dat$TEST_CODE, ignore.case = TRUE), 1, which.max)]
# [1] "White" "White" "Black" "Black" "White" "White" "Black" "White" "Black"
dat$RACE == ptns$RACE[apply(sapply(ptns$ptn, grepl, x = dat$TEST_CODE, ignore.case = TRUE), 1, which.max)]
# [1] TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
dat[dat$RACE == ptns$RACE[apply(sapply(ptns$ptn, grepl, x = dat$TEST_CODE, ignore.case = TRUE), 1, which.max)],]
# ACCT TEST_DATE TEST_CODE Value RACE
# 1 1088 4/4/2016 GFR Caucas 58 White
# 2 1088 4/4/2016 GFR Caucas 58 White
# 7 44867 4/4/2016 GFR Black 27 Black
# 8 1564 4/4/2016 GFR Caucas 30 White
An alternative can be had using the fuzzyjoin
package that joins based on regexes (and other methods):
library(fuzzyjoin)
# dat and ptns from above
regex_left_join(dat, ptns, by = c("TEST_CODE" = "ptn"), ignore_case = TRUE)
# ACCT TEST_DATE TEST_CODE Value RACE.x RACE.y ptn
# 1 1088 4/4/2016 GFR Caucas 58 White White (white|caucas)
# 2 1088 4/4/2016 GFR Caucas 58 White White (white|caucas)
# 3 1088 4/4/2016 GFR Black 47 White Black black
# 4 1088 4/4/2016 GFR Black 47 White Black black
# 5 44867 4/4/2016 GFR 45 Black <NA> <NA>
# 6 44867 4/4/2016 GFR Caucas 33 Black White (white|caucas)
# 7 44867 4/4/2016 GFR Black 27 Black Black black
# 8 1564 4/4/2016 GFR Caucas 30 White White (white|caucas)
# 9 1564 4/4/2016 GFR Black 30 White Black black
subset(regex_left_join(dat, ptns, by = c("TEST_CODE" = "ptn"), ignore_case = TRUE),
subset = RACE.x == RACE.y)
# ACCT TEST_DATE TEST_CODE Value RACE.x RACE.y ptn
# 1 1088 4/4/2016 GFR Caucas 58 White White (white|caucas)
# 2 1088 4/4/2016 GFR Caucas 58 White White (white|caucas)
# 7 44867 4/4/2016 GFR Black 27 Black Black black
# 8 1564 4/4/2016 GFR Caucas 30 White White (white|caucas)