r = /
[ ]+ # match one or more spaces
| # or
(\*) # match one asterisk in capture group 1
[ ]* # match zero or more spaces
(?!\*) # not to be followed by an asterisk (negative lookahead)
| # or
(\n) # match "\n" in capture group 2
/x # free-spacing regex definition mode
str = "Ayy ***lol* m8\n\nlol"
puts str.split(r).inspect
ciA9IC8KICAgIFsgXSsgICAgIyBtYXRjaCBvbmUgb3IgbW9yZSBzcGFjZXMKICAgIHwgICAgICAgIyBvcgogICAgKFwqKSAgICAjIG1hdGNoIG9uZSBhc3RlcmlzayBpbiBjYXB0dXJlIGdyb3VwIDEKICAgIFsgXSogICAgIyBtYXRjaCB6ZXJvIG9yIG1vcmUgc3BhY2VzCiAgICAoPyFcKikgICMgbm90IHRvIGJlIGZvbGxvd2VkIGJ5IGFuIGFzdGVyaXNrIChuZWdhdGl2ZSBsb29rYWhlYWQpCiAgICB8ICAgICAgICMgb3IKICAgIChcbikgICAgIyBtYXRjaCAiXG4iIGluIGNhcHR1cmUgZ3JvdXAgMgogICAgL3ggICAgICAjIGZyZWUtc3BhY2luZyByZWdleCBkZWZpbml0aW9uIG1vZGUKCnN0ciA9ICJBeXkgKioqbG9sKiBtOFxuXG5sb2wiCgpwdXRzIHN0ci5zcGxpdChyKS5pbnNwZWN0
["Ayy", "**", "*", "lol", "*", "m8", "\n", "", "\n", "lol"]