我正在编译以下模式:
pattern = re.compile("media.+\.(aac|ts)")
Run Code Online (Sandbox Code Playgroud)
我的想法是获取包含在字符串中的 .ts 和 .aac 媒体文件。媒体文件名可以是 media-u9xuxtkay_213.aac 或 media-u9xuxtkay_213.ts
根据这个接受的答案Python 正则表达式 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']
Run Code Online (Sandbox Code Playgroud)
所以我打电话给 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']
Run Code Online (Sandbox Code Playgroud)
我应该得到一个 media-u9xuxtkay_213.aac 而不是 aac。接受的答案应该以同样的方式从我的 iPhone 返回 Sent 而不是 iPhone
括号充当“捕获组”,表示正则表达式应该从字符串中选择什么。您可以使用(?: )使其成为非捕获组,因此它会获取整个字符串。
re.compile(r"media.+\.(?:aac|ts)")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4220 次 |
| 最近记录: |