Попробуйте это регулярное выражение здесь:
String[] testcases = new String[] {
"Sample foo ! Test Data",
"Sample bar ! Test Data",
"Test Data Sample foo !",
"Test Data Sample bar !"
};
for (String str : testcases) {
System.out.println(str.replaceAll("(.* ?)(Sample[a-zA-Z ]+ ! ?)(.*)", "$1$3"));
}
Пояснение:
(.* ?) // first match group, matches anything, followed by an optional space
(Sample[a-zA-Z ]+ ! ?) // second match group, matches the String "Sample followed by a series of letters (your country), a whitespace, an exclamation mark and an optional space
(.*) // third match group, matches anything
Таким образом, вторая группа совпадений ($ 2) будет содержать вашу строку «Страна образца», и мы можем просто заменить результат только первой ($ 1) и третьей ($ 3) группой совпадений.