我有一个很长的字符串列表,我需要捕获最后一个或多个字符。对于简单字符串"axa"
,"lmn"
,str[0]
起作用。在
在某些情况下,最后一个字符可以是2中的任何一个,例如字符串“qa(n|m)
,
最后一个字符可以是n
或m
。所以我需要捕获字符串中最后一组括号,并获取其中的所有内容。
在本例中,re.search('\((.*?)\)',s).group(1)
给出了内容。但是,如果这个字符串有两组括号,那么它就不能工作了。在
例如:if str= "aaa(2)bbb(n|m)"
,我只需要'n|m'
谢谢你的帮助。在
Tags:
可以使用纯正则表达式方法对该正则表达式执行此操作:
Demo
在Python中:
^{pr2}$(这使得一个长字符串
aaa(2)bbb(n|m0)
到aaa(2)bbb(n|m5000)
)这样做的好处是只进行一个匹配,而不是像
re.findall
那样为每个匹配构建一个完整的列表。在锚定匹配通常也更快。在
如果您想更快,但以可读性为代价,您可以这样做:
演示:
时间安排:
你可以看到反向字符串方法比其他两种方法快10倍或6倍。。。在
假设子字符串总是在末尾,您可以找到最右边的
(
并将其切片到末尾-1:或者使用re-just-use-findall并获取最后一个元素:
^{pr2}$rstrip
将删除{使用}:
rpartition()
和{如果右括号总是字符串中的最后一个字符,则可以将
^{pr2}$.partition(')')[0]
替换为[:-1]
:相关问题 更多 >
编程相关推荐