Simon:
If the month is always the three letter code you can make a table. The three letter month in one column, and the corresponding number in another. E.g. Jan in cell A1 and 1 in cell B1. Then you can select the whole table, and sort it alphabetically (this way we can use lookup and avoid the long code of OFFSET/MATCH).
I'll assume that the string you want to parse is in cell A1
After this we can just pluck the right values. We know the first three characters will form the month string. So we use LEFT(A1,3). Then we know day is either one or two digits so we'll just indiscriminately take three and include the space using MID(A1,4,3). Last we need to get the year string. Again we have to worry about the day being one or two digits, but we have the space buffer that we can pick up and discard whenever we want. So lets use MID(A1,7,5). For a one digit day it will pick up an extra space before the year, and for a two digit day it will have an extra space after the year, but we don't really care.
Now we just have to make this into a useful date value. The first thing to do change the month string into a value. Using the table we already setup (assuming its sorted alphabetically, the months are in F1:F12 and the corresponding numbers are in G1:G12, but you can put it anywhere) we can do LOOKUP(LEFT(A1,3),F1:F12, G1:G12). Notice the LEFT(A1,3) from before. We now have a numeric Year, Month and Day...which is all we need.
So all together it looks like:
=Date(YEAR, MONTH, DAY)
=Date(MID(A1,7,5),LOOKUP(LEFT(A1,3),$F$1:$F$12,$G$1:$G$12),MID(A1,4,3))
That should take care of it. You can work on the steps in separate cells to play around and see how they work. That's what I usually do before putting it all into one formula in a cell.
Good luck