例如:12<34<123456>123512<34<123456>123
需要输出的结果是<>中间的两个 123456
一开始我是这么写的
re.findall(r'<(.*?)>',str)
但是输出的结果是 两个34<123456,
应该怎么写才能正确获取到<>中的数据呢
还试过
r'.*<(.*?)>.*'
但是好像是输出了最后一个123456
例如:12<34<123456>123512<34<123456>123
需要输出的结果是<>中间的两个 123456
一开始我是这么写的
re.findall(r'<(.*?)>',str)
但是输出的结果是 两个34<123456,
应该怎么写才能正确获取到<>中的数据呢
还试过
r'.*<(.*?)>.*'
但是好像是输出了最后一个123456
你的意思是尖括号是嵌套的么?那么需要用递归平衡组
https://blog.csdn.net/zm2714/article/details/7946437
如何把“xx <aa <bbb> <bbb> aa> yy”这样的字符串里,最长的尖括号内的内容捕获出来?
< #最外层的左括号
[^<>]* #最外层的左括号后面的不是括号的内容
(
(
(?'Open'<) #碰到了左括号,在黑板上写一个"Open"
[^<>>]* #匹配左括号后面的不是括号的内容
)+
(
(?'-Open'>) #碰到了右括号,擦掉一个"Open"
[^<>]* #匹配右括号后面不是括号的内容
)+
)*
(?(Open)(?!)) #在遇到最外层的右括号前面,判断黑板上还有没有没擦掉的"Open";如果有,则匹配失败
> #最外层的右括号
(这些作为注释的换行和内容删除)
如果你只要匹配最内侧的,那么可以 re.findall(r'<([^\<\>]*?)>',str)