Если только одним регулярным выражением, то можно вот таким:
/--start--#(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?(?:([^#]*)#)?--end--/
Только вот произвольное количество уже не получается, только до определённого числа (здесь — до пятидесяти). Ну и результат получится, скажем так, не совсем чистым — но тут уже всё зависит от используемого языка.