0
我編譯如下模式:Python的正則表達式的findall或
pattern = re.compile("media.+\.(aac|ts)")
我的想法是獲得字符串中包含的.ts和.AAC媒體文件。 媒體文件名可以是媒體u9xuxtkay_213.aac或媒體u9xuxtkay_213.ts
根據這一公認的答案Python regular expressions OR你可以使用(|)作爲OR 但是,我看到這是一個公認的答案,因爲它doenst似乎工作對我說:
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']
因此,我調用的findAll和我得到這個:
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']
我應該得到一個媒體u9xuxtkay_213.aac而不只是AAC。同樣的方式接受的答案應該返回從我的iPhone發送,而不僅僅是iPhone
使用'r'media。+ \。(?: aac | ts)「',一個非捕獲組。 –
那麼在另一個問題中接受的答案是錯誤的? – lapinkoira
不,如果你用're.finditer'並抓住'.group()'。但有一個更方便的東西 - 一個非捕獲組。 –