Make [number] and (number) more flexible

The `[number]` and `(number)` have to be formatted quite strictly at the moment:

* `[number]` needs to come before `(number)`
* there cannot be any spaces before, or inside `[number]` and `(number)`
* there must be exactly 1 space in between `[number]` and `(number)`

My proposed pattern will address the points above causing all of these to be parsed identically:

    "   [1]   (2) title"
    "(2)[1]title"
    "   [ 1 ]   ( 2.0 ) title"

Since I used the match group inside the look-ahead, all of the examples above will have `1` in match group 1 and `2` in match group 2 (even for `"(2)[1]title"`).