2

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");

ハイフンを入力し始めると、ハイフンの強調表示が解除され、他のすべてのアルファが強調表示されます。ハイフンを正規表現と一致させる方法によると? これはコーシャでなければなりません。

質問: ハイフンで始まる単語を強調表示する正規表現をどのように記述すればよいですか?

4

1 に答える 1

3

問題は、ハイフンが単語の一部ではない-と見なされることです。これは、単語境界アサーションがハイフンと実際の単語の間で一致することを意味します。つまり、ハイフンで始まる単語はありません。 \b

この問題を解決するには、ハイフンを の \bに置きます。これは、「ハイフンの後に文字で構成される単語が続く」と一致させることを意味します。とにかく単語\bであるため、最初の を削除することもできます。[a-zA-Z]+

rule.pattern = QRegExp("-[A-Za-z]+\\b");
于 2013-01-16T01:17:34.800 に答える