我有一个很长的字符串列表,我需要捕获最后一个或多个字符。对于简单的字符串 "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
