Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        4年前关闭。
                                                                                            
                
        
我需要像这样拆分一个字符串:

aaaa b aaaa {aaa b aaa} aaa b aaa

用“ b”元素表示,但不包括括号中的部分。这不是html或xml,所以我没有尝试任何模块。

“ aaa”表示任意文本。

结果应如下所示:

['aaa', 'b', 'aaaa {aaa b aaa} aaa', 'b', 'aaa']

仍然无法弄清楚正则表达式。
我知道,“向后看”构造(?<!...)不起作用,因为括号中的文本长度可能不同。
我不得不尝试[^{]*?(b)[^}]*?公式,但是它仍然捕获大括号中的“ b”。
想不到别的了。请帮忙。

UPD:我解析了很长的一行(包括EOL),因此不能在行的开头或结尾匹配“ b”似乎不是问题(无论如何都不存在“ b”)。向re.compile()添加re.S(点缀)标志应该可以解决问题。

最佳答案

使用re.split

(?<!})\s(?!{|[^{]*})(?=b)|(?<=b)\s(?!{|[^{]*})


https://regex101.com/r/gQ3kS4/14

关于python - 拆分文本,大括号中省略元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27634388/

10-11 06:47