`ws` symbols kind of don't help at the beginning or at the end of matchers, because they're optional (`[ \t]*`) and this particular matcher would still match something like `foo_goto bar`.

So, outer pair of `ws` in label matcher can be dropped safely and as for the goto statement, Emacs regexps have special _symbol boundary_ tokens that work like word boundaries (`\b`) except they will also match underscores and any other character in _symbol_ syntax class. They're provided as `(symbol ..)` constituent of `lua-rx`.