regex - 在正则表达式中捕获未定义数量的项目
问题描述
我想捕获以下数据:
[趋势, 约翰, DATA1, 0.17, 33.34, 26, 33.33, 0.25, 33.33, DATA2, 0.26, 20.0, 261, 20.0, 0.234, 20.0, 0.1, 20.0, 5, 20.0, FINAL, 245]
从以下文字:
Market
#TREND
Person: JOHN
DATA1
1) 0.17 (33.34%)
2) 26 (33.33%)
3) 0.25 (33.33%)
* random text here
DATA2
1) 0.26 (20.0%)
2) 261 (20.0%)
3) 0.234 (20.0%)
4) 0.1 (20.0%)
5) 5 (20.0%)
* qsdfdsf random dsfg text random here
FINAL
245
Signature
我编写了以下正则表达式代码,可在此精确示例中正常工作:
#(TREND)\n+\w*:\s*(JOHN)\n+(DATA1)\n\d\S\s(\d+.?\d*)\s\((\d+.?\d*)%\)\s*\n\d\S\s(\d+.?\d*)\s\((\d+.?\d*)%\)\s*\n\d\S\s(\d+.?\d*)\s\((\d+.?\d*)%\)\s*\n.*\n*(DATA2)\n\d\S\s(\d+.?\d*)\s\((\d+.?\d*)%\)\s*\n\d\S\s(\d+.?\d*)\s\((\d+.?\d*)%\)\s*\n\d\S\s(\d+.?\d*)\s\((\d+.?\d*)%\)\s*\n\d\S\s(\d+.?\d*)\s\((\d+.?\d*)%\)\s*\n\d\S\s(\d+.?\d*)\s\((\d+.?\d*)%\)\s*\n.*\n*(FINAL)\n(\d+)
我想让 DATA1 和 DATA2 的随机项目数从 1 到 10 项进行扩展:
Market
#TREND
Person: JOHN
DATA1
1) 0.17 (33.34%)
2) 26 (33.33%)
3) 0.25 (33.33%)
4) 0.11 (40.40%)
5) 0.222 (50.50%)
* random text here
DATA2
1) 0.26 (20.0%)
2) 261 (20.0%)
3) 0.234 (20.0%)
* qsdfdsf random dsfg text random here
FINAL
245
Signature