使用QRegExp在Qt中突出显示单词

时间:2015-02-12 15:38:55

标签: regex qt qstring 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 个答案:

答案 0 :(得分:1)

在正则表达式中,\1对应于第一个匹配的组。组是括号中正则表达式的一部分。例如,匹配字符串&#34; hello world&#34;反对正则表达式(hello)([.*])\1对应于&#34;你好&#34;和\2到&#34;世界&#34;

在你的第二个片段中,

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

您不使用括号,因此没有组\1会引用。

使用

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