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()'。但有一个更方便的东西 - 一个非捕获组。 –