社内マークアップ言語用のコード検証システムを開発しようとしていますが、正規表現の経験がないために少し問題があります。言語のタグは次の形式に従います。
{ タグ : 番号 : フレーズ 1 | フレーズ 2 ... | フレーズn}
ここで、number は範囲 (3.0、3.5、4.0 ... 8.5) の数値であり、フレーズの 1 つだけが最後にアスタリスクを持っている必要があり、少なくとも 2 つのフレーズが存在する必要があります。タグでは大文字と小文字が区別されず、空白は問題にならないことに注意してください。
私が使用している正規表現は次のとおりです。
\{ ?(mw) ?: ?[3-8]{1}(.0|.5)? ?((((\| ?(\w ?)+[\p{P}]? ?)*)+((\| ?(\w\ ?)+[\p{P}]?)* ?\* ?)+((\| ?(\w ?)+[\p{P}]? ?)*)?)|(((\| ?(\w ?)+[\p{P}]? ?)*)?((\| ?(\w ?)+[\p{P}]?)* ?\* ?)+((\| ?(\w ?)+[\p{P}]? ?)*)+))( ?\})
これは、次の正しいケースに一致します。
{ mw : 3.5 | phrase 1 | phrase 2* | phrase 3}
だけでなく、次の誤ったケースも含まれます。
{ mw : 3.5 | phrase 1* | phrase 2* | phrase 3} [Two asterisks]
と
{ mw : 3.5* | phrase 1 | phrase 2* | phrase 3} [An asterisk with the number value]
助けてくれてありがとう。
また、データ検証システムが通常どのように機能するかについて洞察を提供したい人がいれば、その洞察をいただければ幸いです。