Skip to main content
 首页 » 编程设计

python之如何提取字符串中的最后一组括号

2025年05月04日21thcjp

我有一个很长的字符串列表,我需要捕获最后一个或多个字符。对于简单的字符串 "axa"、"lmn"、str[0] 有效。

某些情况下,最后一个字符可能是 2 中的任何一个,例如字符串 "qa(n|m) , 最后一个字符可以是 n 或 m。所以我需要捕获字符串中的最后一组括号并获取其中的所有内容。 在这种情况下,re.search('\((.*?)\)',s).group(1) 给出了内容。但是,如果该字符串有 2 组括号,则它不起作用。

例如:if str= "aaa(2)bbb(n|m)" ,我只需要 'n|m'

感谢任何帮助。

请您参考如下方法:

假设子串总是在末尾,你可以找到最右边的(并切片到末尾-1:

s = "aaa(2)bbb(n|m)" 
 
print(s.rstrip("*")[s.rfind("(")+1:-1]) 
n|m 

或者使用 re 只使用 findall 并获取最后一个元素:

import re 
 
print(re.findall('\((.*?)\)',s)[-1]) 

rstrip 将删除 *(如果它作为字符串的末尾)否则什么都不做。

In [24]: s = "ee(1)bb(aaa|bbb)*" 
In [25]: print(s.rstrip("*")[s.rfind("(")+1:-1]) 
aaa|bbb 
In [26]: print(re.findall('\((.*?)\)',s)[-1]) 
aaa|bbb     
In [27]: s = "ee(1)bb(aaa|bbb)"     
In [28]: print(re.findall('\((.*?)\)',s)[-1]) 
aaa|bbb     
In [29]: print(s.rstrip("*")[s.rfind("(")+1:-1]) 
aaa|bbb