0

我想为 Basenote 创建一个令牌(编写一个 Java MIDI 播放器)。

Basenote 制作它的令牌的正则表达式是BASENOTE("[A-Ga-g]"). 现在,我有一个名称标记,它必须与模式“C:贝多芬”相匹配。(C代表作曲家)。这是我的名称令牌应该匹配的内容:NAME("(?<=C:)[^\n\r\f]+"). 为简单起见,这意味着应该匹配后面跟“C:”的任何内容

问题是,我的词法分析器认为名称中的 C 是 Basenote,它标记“C:贝多芬”,如下所示:

<Basenote> C  <Name> Beethoven

而我只想要贝多芬。我该如何解决这个问题?

PS:我对正则表达式模式匹配非常陌生,所以我希望我在那里写的任何东西都有意义。

4

1 回答 1

3

尝试改用这个:

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