Подсветка слов в 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>");