Firstly, you want to be processing one string at a time, typically by doing inside a template rule or for-each loop. Your error message ""A sequence of more than one item is not allowed as the first argument of ..." says that you are trying to process several strings at once, so there is some structural problem in your code. (But you've made the mistake of not showing your code so we can't tell you what you're doing wrong).
I think the simplest way of doing this with regular expressions is to use replace() twice: replace($in, '([0-9]*)([^0-9]*)', '$1') to get the digits, and replace($in, '([0-9]*)([^0-9]*)', '$2') to get the non-digits. Or if you used xsl:analyze-string you would be able to extract both parts using regex-group().
It's not hard to do it using translate():
translate($in, '0123456789', '') gives you the non-digits, and
translate($in, translate($in, '0123456789', ''), '') gives you the digits.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference