Подсветка слов в Qt с использованием QRegExp

Я пытаюсь выделить искомое слово, используя QRegExp.

Это код.

QString text = "A <i>bon mot</i>.";
text.replace(QRegExp("<i>([^<]*)</i>"), "<b>\\1</b>");
//Output: "A <b>bon mot</b>."

Код выше работает, но код ниже не работает.

QString text1 = "This is a sample text.";
text1.replace(QRegExp("s"), "<b>\\1</b>");
//Output: "Thi<b>\1</b> i<b>\1</b> a <b>\1</b>ample text."

1 ответ

Решение

В регулярных выражениях \1 соответствует первой подобранной группе. Группы являются частью регулярного выражения в скобках. Например, сопоставление строки "hello world" с регулярным выражением (hello)([.*]) буду иметь \1 соответствует "привет" и \2 в "мир".

В вашем втором фрагменте,

text1.replace(QRegExp("s"), "<b>\\1</b>");

Вы не используете круглые скобки, поэтому нет группы \1 будет относиться к.

использование

text1.replace(QRegExp("(s)"), "<b>\\1</b>");
Другие вопросы по тегам