Windows 7 SP1
MSVS 2010
Qt 4.8.4
我正在尝试使用Qt Syntax Highlighter Example。
我有一个应用程序,需要突出以连字符开头的单词。所以我从这段代码中修改了正则表达式:
classFormat.setFontWeight(QFont::Bold);
classFormat.setForeground(Qt::darkMagenta);
rule.pattern = QRegExp("\\bQ[A-Za-z]+\\b");
rule.format = classFormat;
highlightingRules.append(rule);
突出显示以Q开头的单词。我将其更改为:
rule.pattern = QRegExp("\\b-[A-Za-z]+\\b");
没有任何反应。
我试试
rule.pattern = QRegExp("\\b\\-[A-Za-z]+\\b");
没有
出于好奇,我试试
rule.pattern = QRegExp("\\b[-A-Za-z]+\\b");
如果我开始输入连字符,则连字符不会突出显示,并且每个其他字母都会突出显示。根据{{3}},这应该是犹太人。
问题:如何编写正则表达式以突出显示以连字符开头的单词?
答案 0 :(得分:2)
问题是连字符-
被认为不属于单词。这意味着,字边界断言 \b
将在连字符和实际字之间匹配。换句话说:没有以连字符开头的单词。
要解决此问题,请将连字符放在 \b
之前,这意味着您要匹配“连字符,后跟一个由字母组成的单词”。您甚至可以删除第一个\b
,因为[a-zA-Z]+
无论如何都是一个词:
rule.pattern = QRegExp("-[A-Za-z]+\\b");