Python正则表达式找到所有OR

时间:2016-10-19 14:02:10

标签: python regex

我正在编译以下模式:

pattern = re.compile("media.+\.(aac|ts)")

我的想法是获取字符串中包含的.ts和.aac媒体文件。 媒体文件名可以是media-u9xuxtkay_213.aac或media-u9xuxtkay_213.ts

根据此接受的答案Python regular expressions OR,您可以使用(|)作为OR 但我不知道这是一个可接受的答案,因为它似乎对我很有用:

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

1 个答案:

答案 0 :(得分:2)

括号充当"捕获组",表示正则表达式应从字符串中选择的内容。您可以使用(?: )使其成为非捕获组,因此它会获取整个字符串。

re.compile(r"media.+\.(?:aac|ts)")