I have a text file containing text and numbers, for example:

```none
MANGO444CHERRYa.b /c-1@2#3APPLEa>b;c. a1$2$3WHITE12 3ab cWHITE5%6^7a=b +cWHITEaba5b6a7baMANGO555CHERRY 1'2'3a,b,c!APPPLE1`2~3ab @cYELLOW123---a- -bcYELLOW

```

I need to get he number between `MANGO` and `CHERRY` that comes before `APPLE` and `WHITE` (in this case, `444`). The text between the uppercase words can be anything at all. I tried this:

```none
(?<=MANGO)\d+((=?.*?APPLE)(=?.*?WHITE))  

```

but it returns:

```none
444CHERRYa.b /c-1@2#3APPLEB>b;c. a1$2$3WHITE

```

I hope this demonstrates the problem in a better way