Ваш шаблон регулярного выражения использует символ *
, не экранируя его.Таким образом, он рассматривается как квантификатор, а не как символ для сопоставления.Исправление выражения должно позволить остальной части вашего кода работать как задумано.Чтобы протестировать шаблоны, вы можете использовать такие сайты, как regex101.com
Хотя я не тестировал это подробно, следующий шаблон является базовым и соответствует вашим потребностям: (\*\*)(.*?)(\*\*)
Это позволяет вам сопоставлять подстроки "** Hi **", "** XYZ **" и "** PQR **".Ваш код в настоящее время выделяет их целиком.Что вы, вероятно, хотите сделать, это удалить звездочки и вставить средний текст жирным шрифтом.
Согласно моему шаблону, ваш текст должен быть доступен в качестве второй подходящей группы.Таким образом, вы можете извлечь из него индексы, чтобы применить диапазон, и удалить из него все вхождения **
.Для этого должны быть методы как в классах String, так и в регулярных выражениях.
Исходя из ваших точных потребностей, у вас будут разные ограничения и крайние случаи, например, что делать с "****"где средний текст пуст.