Ich Kompilieren das folgende Muster:Python Regex findall OR
pattern = re.compile("media.+\.(aac|ts)")
Meine Idee .ts und .aac Mediendateien in einem String enthalten sind, zu erhalten ist. Die Medien Dateinamen können Medien-u9xuxtkay_213.aac oder Medien-u9xuxtkay_213.ts
Nach dieser akzeptierte Antwort sein Python regular expressions OR Sie verwenden können (|) als ODER Aber ich sehe nicht, wie das ist eine akzeptierte Antwort, da es doenst scheinen mir zu arbeiten:
In [23]: s
Out[23]: 'Sent from my iPhone'
In [24]: patt = re.compile("Sent from my (iPhone|iPod)")
In [25]: patt.findall(s)
Out[25]: ['iPhone']
So nenne ich das findall und ich diese:
In [37]: media
Out[37]: 'media-u9xuxtkay_213.aac'
In [38]: pattern = re.compile("media.+\.(aac|ts)")
In [39]: pattern.findall(media)
Out[39]: ['aac']
ich einen Medien-u9xuxtkay_213.aac statt nur aac bekommen sollte. So wie die angenommene Antwort sollte Sent von meinem iPhone statt nur iPhone
Verwenden Sie 'r" Medien. + \. (?: aac | ts) "', eine nicht einfangende Gruppe. –
Also ist die akzeptierte Antwort in der anderen Frage falsch? – lapinkoira
Nein, wenn Sie es mit 're.finditer' verwenden und' .group() 'greifen. Aber es gibt eine bequemere Sache - eine nicht einfangende Gruppe. –