So I figured out how to do this again.
I used Perplexity AI a bit to help me understand complex regex's I couldn't grok on my own and for some suggestions on how to write/rewrite regex's as I went. The AI wasn't a perfect coder yet, and surprisingly if I told it they "forgot" something I caught it admitted the error and suggested a fix. I had to write and debug a number of things, but between some excellent regex's posted by @ohrenkino (and a couple others) and the AI, I worked it out.
My old Action Group for automating "sorting" of the ContentGroup field used brute force to re-order things. That's where I ended up again, because as stated above, there's no "sort" for strings in a field. ...and what I really wanted wasn't an alpha sort anyway, but a way to put the keywords into a predictable order (when they occur for a given track).
My solution is crude, but will work for keeping this field I use heavily sorted into a consistent and meaningful order.
It works by walking through a list of known keywords I used when tagging using this field. Some keywords are for extra genres or subgenres (e.g. R&B, Rock, Pop, DancePop, NewWave,) (I only use the Genre field for one main genre for a file). Some keywords are for other metadata like "HasVocal" to indicate the track has vocals, or "Instrumental" to indicate it doesn't. Some keywords indicate if/where a track has charted (Top40 if it hit the US Hot100's top 40), or other things like mood (Mellow or PowerBallad), "Soundtrack" (if it was ever used in a soundtrack). I could go on.
Here's a screenshot of the action group:
Here's a screenshot of the detail for one of the actions:

This action looks for the keyword "R&B" which may be separated from other values by a comma and space. It then moves that value (R&B) to the start of the field, and moves the stuff that was before and after "R&B" to be after R&B.
$regexp(%CONTENTGROUP%,^(.)\b(R'&'B\b,? ?)(.),$2', '$1$3)
If you do this for every keyword you care about moving, and do it in the right order (the things you move to the front in the later actions in the action group will end up "first". The last will be first as they say.
You can mix up the tokens at the end to put the item last instead of first too like this:
$regexp(%CONTENTGROUP%,^(.*)\b(Check-Year\b,? ?)(.*), $1$3','$2)
It's a hack at best, but having used this approach in the past, it served me well for a number of years.
Hopefully this will help others looking to solve their challenges with regex or actions.
Also notice in the screenshot that I created some "Comment" actions just to help comment and separate the actions in my action group. That'll help me maintain it in the future.