我正在编译以下模式:
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
答案 0 :(得分:2)
括号充当"捕获组",表示正则表达式应从字符串中选择的内容。您可以使用(?: )
使其成为非捕获组,因此它会获取整个字符串。
re.compile(r"media.+\.(?:aac|ts)")