0

Basenote のトークンを作成したい (Java MIDI プレーヤーを作成する)。

トークンを作成するための Basenote の正規表現はBASENOTE("[A-Ga-g]"). これで、「C: Beethoven」というパターンに一致する名前トークンができました。(Cは作曲家の略です)。これは、私の名前トークンが一致するはずのものです: NAME("(?<=C:)[^\n\r\f]+"). 簡単にするために、これは「C:」が後に続くものはすべて一致する必要があることを意味します

問題は、私のレクサーが Name の C を Basenote と見なし、次のように「C: Beethoven」をトークン化することです。

<Basenote> C  <Name> Beethoven

ベートーベンが欲しいだけなのに。この問題を解決するにはどうすればよいですか?

PS: 私は正規表現パターン マッチングに非常に慣れていないので、そこに書いたことが何らかの意味を成すことを願っています。

4

1 に答える 1

3

代わりにこれを使用してみてください:

BASENOTE("[A-Ga-g](?!:)")
于 2013-03-29T21:01:15.173 に答える