Streamlining messy genre tags with a list of pre-defined genres

Hi, I've been automatically tagging music for a long time now. I'm tired of all the random genre tags though, so I have created a list of genres I listen to, and I want to keep just these genres in the tags, and delete the rest. It doesn't have to be perfect, as I just want to use it on my current library, and from then on I'm going to manually tag all my new music.

Here in an example what I mean:
Song A has the following genre tags right now: Folk; Indie Rock; Chamber Folk; Melancholy; Rock; Singer-Songwriter; Contemporary Folk; Personal--Loved; Avant-Folk; 2018; Dark Folk; Indie; Beautiful; Piece Of Art; Indie Folk; Jazz Folk; Best Of 2018; 2018 Gem; Fip; Alternative Rock; Best Songs Of 2018; Female Vocalists; Underrated; Music For A Sad Road Movie; Acoustic; 2018 Releases; Alternative; Progressive Folk

I want to remove all genre tags that are not highlighted (in italics or bold) and retain only the highlighted ones from my list. These highlighted genres are part of a genre list I have created. Additionally, I'd like to create a grouping tag to categorize broader genres like Pop, Folk, Jazz, etc., while keeping more specific subgenres like Ambient Pop, Chamber Folk, Modal Jazz, etc., within the "genre" tag. So, while I don't want to delete the bolded genres, I want to move them to a second category.

So, for song A, the end result would be:

Grouping: Folk; Rock
Genre: Indie Rock; Chamber Folk; Singer-Songwriter; Contemporary Folk; Indie Folk; Avant-Folk; Alternative Rock; Progressive Folk

This would be much, much easier to manage than the mess above. However, I can't seem to figure out how I could do this. I have looked through actions and while that seems like the option to use, none of the actions seem to be able to do exactly what I want, unless I'm misunderstanding one.

Thank you so much in advance for any help for this.

The only way I could think of is:
You have your genres in a source field.
You have a set of actions that checks the presence of a genre of your list with that source list and then appends a target field with the found genre.
In the end, when all genres from your list have been compared, you delete the source field.
A sample action to get e.g. Folk from the list would be:
An action of the type "Format value" for TARGETGENRE
Format string: $ifgreater($strstr(Folk,%genre%),0,Folk; %targetgenre%,%targetgenre%)
You would have to repeat that for every genre in your list.
Please note that "Folk" and "Chamber Folk" both contain "Folk" and would trigger the true branch in that action.

Thank you! I will ask over at MB Picard if there is an easier option in there, and if not, I might just do that. Especially since I want to start using mp3tag for all the manual tagging from here on out, might not be a bad idea to set it up like this from the start. <3

What was your idea?
How should any list be compared with existing tag data?
How should any program "guess" where you want to see which description and how to deal with elements that you simply forgot to include in your list?