使用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对应于第一个匹配的组。组是括号中正则表达式的一部分。例如,将字符串"hello-world"与regexp (hello)([.*])进行匹配将使1对应于"hello",使2对应于"world"。

在您的第二个片段中,

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

您不使用括号,因此1不会引用任何组。

使用

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

最新更新