Это должно помочь. Обратите внимание, что \\
используется для экранирования \
. Код ниже позволяет выделить несколько слов.
\b
соответствует границам слов, поэтому, если вы заключите слово в \b
, регулярное выражение будет соответствовать целому слову.
String source="1234 123 345 123456";
String words="123|345";
Pattern p = Pattern.compile("\\b(" + words + ")\\b");
Matcher m = p.matcher(source);
source=m.replaceAll("<b><i>$1</i></b>");
System.out.println(source);
выход
1234 <b><i>123</i></b> <b><i>345</i></b> 123456
1234 123 345 123456
Но учтите предостережение , что если ваш входной текст уже размечен, ваши слова могут не совпадать
Ex
String source="1<b><i>23</i></b>";//This does not match 123 !
Редактировать
Используйте этот шаблон, если вы ожидаете, что ваши слова оканчиваются на необязательный .
Pattern.compile("\\b(" + words + ")[.]?\\b");