Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
音乐和弦名称的python正则表达式_Python_Regex - Fatal编程技术网

音乐和弦名称的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
这样的减少和弦怎么样?