我想为Basenote创建一个令牌(编写Java MIDI播放器)。
用于使其成为令牌的Basenote的正则表达式为BASENOTE("[A-Ga-g]")
。现在,我有了一个名称令牌,该令牌必须匹配模式“ C:贝多芬”。 (C代表作曲家)。这是我的名称令牌应该匹配的:NAME("(?<=C:)[^\n\r\f]+")
。为简单起见,这意味着后跟“ C:”的任何内容均应匹配
问题是,我的词法分析器认为名称中的C是一个基符,并且按如下方式标记了“ C:贝多芬”:
<Basenote> C <Name> Beethoven
而我只想要贝多芬。我该如何解决这个问题?
PS:我是正则表达式模式匹配的新手,所以我希望我在那里写的内容都有意义。
最佳答案
尝试使用此代替:
BASENOTE("[A-Ga-g](?!:)")