Один из способов сделать это - сделать две замены:
str = str.replaceAll("</FS>", "");
str = str.replaceAll("<FS:(\\d+)>", "\\\\fs$1");
System.out.println(str);
Вывод:
I \fs20am in trouble.
Первая замена просто удаляет </FS>
из строки.
Вторая замена использует шаблон RegEx
<FS:(\d+)>
.
![enter image description here](https://i.stack.imgur.com/2cB1B.png)
Шаблон RegEx
соответствует буквенным символам <FS:
за ним следуют одна или несколько цифр, которые хранятся в группе 1 (\d+)
, за которыми следует символ >
Значение, сохраненное в группе 1, можно использовать в строке замены с помощью $1
, поэтому\\\\fs$1
будет обратной косой чертой \
, за которой следует fs
с последующим содержимым группы 1 (\d+)
, в данном случае 20.
Числа, соответствующие \d+
, сохраняются в группе 1,доступ с помощью $1