Потому что все во второй части регулярного выражения в первой части, вы могли бы сделать что-то вроде этого:
String foo = "[email protected]#$5o993idl;)"; // your string here.
//First replace removes all the characters you don't want.
foo = Regex.Replace(foo, "[^_a-zA-Z0-9-]", "");
//Second replace removes any characters from the start that aren't allowed there.
foo = Regex.Replace(foo, "^[^a-zA-Z]+", "");
Так начать с кожурой это до только допустимых символов. Затем избавиться от любых разрешенных символов, которые не могут быть в начале.
Конечно, если ваше регулярное выражение усложняется, это решение разваливается довольно быстро.
У вас есть регулярное выражение - с чем вы столкнулись? –
По строкам для вас означает 'string []'? Разве это не «получение всех совпадений» так же, как «не получить вещи, которые не совпадают»? – vcsjones