0

こんにちは、私は PySide で簡単なテキスト エディターを作成しています。特定のキーワードを色分けしたいと考えています。これが私がコメントを一致させる方法です。

comment    = QtCore.QRegExp(r'\(\*(.*)?')

単一のキーワードに一致する

keyword    = QtCore.QRegExp(r'/action/')

このようなリストからどのように一致させることができますか:

reserved_words = ["if", "else", "elseif", "while"]
keywords = QtCore.QRegExp(r'/match_the_reserced_kewords_here/')
4

1 に答える 1

0

1つ(または複数)のキーワードに一致させるには、キーワードで使用できる文字を定義する必要があります。そうでなければ、あなたは一致するでしょう、それはあなたがaction望むreactionものではないかもしれません。

単一のキーワードに一致する正しい方法は\b、単語の前後に単語の境界をアサートすることです。

r'/\baction\b/'

|いずれかのキーワードに一致させるには、単語の間に交互の正規表現を作成する必要があります。

r'/\b(' + r'|'.join(reserved_words) + r')\b/'

このソリューションは.、キーワード?に正規表現*にメタ文字が含まれていないことを前提としています。たとえば、、、、、、、、、、、、、、、、、、。+[](){}\^$|

単語の境界もあるため、問題はメタ文字をエスケープするほど単純ではありません。ただし、予約キーワードは英語のアルファベット文字のみで構成されていると思います。その場合は問題ありません。

于 2013-03-17T06:38:11.170 に答える