音乐和弦名称的python正则表达式
我想把音乐和弦分开 比如说音乐和弦名称的python正则表达式,python,regex,Python,Regex,我想把音乐和弦分开 比如说 AEDm至[A、E、Dm] DmEbD7至[Dm,Eb,D7] DmF#至[Dm,F#] 下面是我编写的代码 m = re.match("([A-Z][#bm7]*)([A-Z][#bm7]*)+",chord_name_str) print(group(m)) 但是它将FGAm匹配到[F,Am]而不是[F,G,Am] 我错在哪里了???你可以在这里只使用一个捕获组,实现你想要的结果 chords = ['AEDm', 'DmEbD7', 'Dm
AEDm
至[A、E、Dm]
DmEbD7
至[Dm,Eb,D7]
DmF#
至[Dm,F#]
下面是我编写的代码
m = re.match("([A-Z][#bm7]*)([A-Z][#bm7]*)+",chord_name_str)
print(group(m))
但是它将FGAm匹配到[F,Am]
而不是[F,G,Am]
我错在哪里了???你可以在这里只使用一个捕获组,实现你想要的结果
chords = ['AEDm', 'DmEbD7', 'DmF#', 'FGAm']
for chord in chords:
print(chord, re.findall("([A-Z][#bm7]*)",chord))
#AEDm ['A', 'E', 'Dm']
#DmEbD7 ['Dm', 'Eb', 'D7']
#DmF# ['Dm', 'F#']
#FGAm ['F', 'G', 'Am']
您可以在这里使用一个捕获组,并获得您想要的结果
chords = ['AEDm', 'DmEbD7', 'DmF#', 'FGAm']
for chord in chords:
print(chord, re.findall("([A-Z][#bm7]*)",chord))
#AEDm ['A', 'E', 'Dm']
#DmEbD7 ['Dm', 'Eb', 'D7']
#DmF# ['Dm', 'F#']
#FGAm ['F', 'G', 'Am']
像
C/G
这样的斜线和弦或者像Cdim
这样的减少和弦怎么样?像C/G
这样的斜线和弦或者像Cdim
这样的减少和弦怎么样?