0

我正在尝试使用 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."
4

1 回答 1

1

在正则表达式中,\1对应于第一个匹配的组。组是括号中正则表达式的一部分。例如,将字符串“hello world”与正则表达式匹配(hello)([.*])\1对应于“hello”和\2“world”。

在你的第二个片段中,

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

你不使用括号,所以没有组\1会引用。

利用

text1.replace(QRegExp("(s)"), "<b>\\1</b>");
于 2015-02-12T16:41:27.727 回答