HTML の開始・終了タグをチェックする正規表現を理解したい


JavaでHTMLタグの開始タグ・終了タグのバリデーションチェックをしたいのですが、正規表現を理解したいです。

[code]

    (<(\\s*(?:/\\s*)?【tag name】(?:\\s*|\\s+[^>]+))(?:>|(?=<)|$(?!\\n)))
    
[/code]

こちらでタグチェックをしている参考箇所を見つけたのですが、正規表現でどういう意味なのでしょうか？  
自分でも分析していますが、なかなか理解にたどり着けません。もしアドバイスいただける方がいればよろしくお願いいたします。

* * *

追記

自分なりに解析してみています。アドバイスいただけたら幸いです。  
①  
**(** <(\s*(?:/\s*)?【tag name】(?:\s*|\s+[^>]+) **)**  
**(**?:>|(?=<)|$(?!\n)) **)**  
この太字カッコは「グループ化」でしょうか？ここをまず優先的に処理する。前タグ（）のタグ名（a）前後を分けているのでしょうか？

②  
**\\\s** *は「空白０個以上」でしょうか？

③  
(?:/\\\s*)  
ここがよくわかりません。。  
「:が１個以上でしょうか？」ただタグで:があるケースってあるのかな。。  
そして「/が必要」でしょうか？あとは「空白０個以上」でしょうか？

④  
カッコのあとの?はなんでしょうか？【tag name】の前の?です

⑤  
**(**?:\s*|\s+[^>]+ **)**  
この太字カッコは「グループ化」でしょうか？

⑥  
?:  
「コロン１文字」でしょうか？コロンがよくわからない。。

⑦  
\s*は「空白が０文字以上」でしょうか？

⑧  
|で前後いずれかの文字。`?:\\s*`か`\\s+[^>]+`

⑨  
\s+で「空白１個以上」でしょうか？

⑦  
[^>]+で「>以外の文字１個以上」でしょうか？

⑧  
**(**?:>|(?=<)|$(?!\n) **)**  
太字カッコの部分がグループ化でしょうか？

⑨  
?:コロン１文字でしょうか？

⑩  
>で「>が必要」ということでしょうか？

⑪  
?:>|(?=<)|$(?!\n)  
このパイプで「?:>」か「(?=<)」か「$(?!\n)」でしょうか？

それ以降のところもご指導いただけるとありがたいです。




こんにちは、こちらのサイトに正規表現をコピペして解析結果を読んでみるといいと思います

<https://regexr.com/>

雰囲気英語が読めればそのまま理解できると思いますが

**<**
へのマッチの後の、最初の開きカッコでは空白類を許可しています、次の開きカッコでは閉じたぐ開きタグ両方を認識するためにマッチした後、また空白類を許可しています。そのあとはタグ名です、三番目の開きカッコのあとは、空白類か
**>** でない文字にマッチ。四番目の開きカッコ以後は閉じ **>** を改行 **<** の前にきてないことを確認しながら探索している。

といった感じだと思います。

