我们将来自 REST API 调用的数据存储在输出文件中,如下所示:
示例输入文件:
test test123 - test (bla bla1 (On chutti))
test test123 bla12 teeee (Rinku Singh)
balle balle (testagain) (Rohit Sharma)
test test123 test1111 test45345 (Surya) (Virat kohli (Lagaan))
testagain blae kaun hai ye banda (Ranbir kapoor (Lagaan), Milkha Singh (On chutti) (Lagaan))
预期输出:
bla bla1
Rinku Singh
Rohit Sharma
Virat kohli
Ranbir kapoor, Milkha Singh
获得预期输出的条件:
- 始终考虑每行中最后一次出现的括号 ()。我们需要提取最后一对最外面的括号内的值。
- 在最后一次出现的 () 中,提取每次出现嵌套括号 () 之前的所有值。
- 例如:
test test123 - test (bla bla1 (On chutti))
最后一个括号从(bla
到开始,chutti))
所以我需要bla bla1
因为它在内部 之前(On chutti)
。因此,查找最后一个括号,然后在括号内有多少对括号,我们需要在它们之前获取数据,例如:在行中testagain blae kaun hai ye banda (Ranbir kapoor (Lagaan), Milkha Singh (On chutti) (Lagaan))
需要的是Ranbir kapoor
和Milkha Singh
。
尝试使用正则表达式:我尝试在正则表达式的工作演示 中使用以下正则表达式:
正则表达式:
^(?:^[^(]+\([^)]+\) \(([^(]+)\([^)]+\)\))|[^(]+\(([^(]+)\([^)]+\),\s([^\(]+)\([^)]+\)\s\([^\)]+\)\)|(?:(?:.*?)\((.*?)\(.*?\)\))|(?:[^(]+\(([^)]+)\))$
我尝试过的 Regex 运行良好,但我想根据这里专家的建议来改进它。
首选语言:希望改进此正则表达式或 Python,awk 答案也不错。我自己也会尝试添加awk
答案。