In VIM, if I do a `:echo split('abcd123ef4ghij56k', '\d\+')`, the representation of the list `[abcd', 'ef', 'ghij', 'k']` is printed. But I am looking for a behaviour that prints what split() did not return, in this case: `['123', '4', '56']`.

Of course, in a simple example like here, I could change the pattern to `\D\+` in order to get what I want. Yet, this is not what I am after because the pattern is an argument in a function and I think I don't know how to *opposite* the pattern.

Here's a function that returns such a list for an expression:

```
function! MatchMultiplePatterns(txt, re) 

  let l:result = []

  let l:pos = match(a:txt, a:re)

  while l:pos != -1

        let l:matchedString = matchstr(a:txt, a:re, l:pos)
        let l:result += [l:matchedString]

        let l:pos = match(a:txt, a:re, l:pos + strlen(l:matchedString))

  endwhile

  return l:result

endfunction

```

But I believe this should be possible without a `while`-loop and calling match() twice.