Is it always FCP*, * being a numeric value ? Can you find a regex for what you want to extract ?
Keeping on the approach you started with, by replacing before and after by "" you can do
library(stringr)
#> Warning: le package 'stringr' a été compilé avec la version R 3.5.2
x="Book FCP1 is missing in BOOKS setup. Book may be new."
str_replace_all(x, "^Book | is .*", "")
#> [1] "FCP1"
gsub("^Book | is .*", "", x)
#> [1] "FCP1"
Another option is to use extract instead of replace, it's hard to know if this approach is going to generalize well with the rest of your data since you are just providing one text string as sample.
library(stringr)
x="Book FCP1 is missing in BOOKS setup. Book may be new."
str_extract(x, "(?<=Book\\s)[A-Z]+\\d")
#> [1] "FCP1"