gpt4 book ai didi

Python重新匹配字符串中最后一个下划线

转载 作者:行者123 更新时间:2023-12-01 05:38:12 24 4
gpt4 key购买 nike

我有一些看起来像这样的字符串

S25m\S25m_16Q_-2dB.png
S25m\S25m_1_16Q_0dB.png
S25m\S25m_2_16Q_2dB.png

我想获取斜杠和最后一个下划线之间的字符串,以及最后一个下划线和扩展名之间的字符串,所以

期望:

[S25m_16Q, S25m_1_16Q, S25m_2_16Q]
[-2dB, 0dB, 2dB]

我能够通过这样做得到斜线和扩展之间的全部内容

foo = "S25m\S25m_16Q_-2dB.png"
match = re.search(r'([a-zA-Z0-9_-]*)\.(\w+)', foo)
match.group(1)

但我不知道如何制作一个模式,所以我可以用最后一个下划线将其分割。

最佳答案

捕获您想要获取的组。

>>> re.search(r'([-\w]*)_([-\w]+)\.\w+', "S25m\S25m_16Q_-2dB.png").groups()
('S25m_16Q', '-2dB')
>>> re.search(r'([-\w]*)_([-\w]+)\.\w+', "S25m\S25m_1_16Q_0dB.png").groups()
('S25m_1_16Q', '0dB')
>>> re.search(r'([-\w]*)_([-\w]+)\.\w+', "S25m\S25m_2_16Q_2dB.png").groups()
('S25m_2_16Q', '2dB')

* 贪婪地匹配前面的字符集(消耗尽可能多的);它继续到最后一个 _,因为 \w 包含字母、数字和下划线。

<小时/>
>>> zip(*[m.groups() for m in re.finditer(r'([-\w]*)_([-\w]+)\.\w+', r'''
... S25m\S25m_16Q_-2dB.png
... S25m\S25m_1_16Q_0dB.png
... S25m\S25m_2_16Q_2dB.png
... ''')])
[('S25m_16Q', 'S25m_1_16Q', 'S25m_2_16Q'), ('-2dB', '0dB', '2dB')]

关于Python重新匹配字符串中最后一个下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18350913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com