2015-02-12 5 views
0

Я пытаюсь выделить искомое слово, используя QRegExp.Выделение слов в Qt с помощью 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» с regexp (hello)([.*]) будет иметь \1, соответствующее «привет» и \2 «миру».

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

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

не использовать круглые скобки, так что нет никакой группы \1 будет ссылаться.

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

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

Спасибо за ваше подробное объяснение. Работает – user2214646

Смежные вопросы