フィールドタイプのセットを正しく識別する正規表現パターンのセットを構築しようとしていますが、それらすべてを相互に排他的に取得する方法がわかりません。これらの構文規則は常に、私が望んでいない一致を作成するのに十分な重複があるようです。
変数: すべてをキャプチャ
$フィールド
$field_with_underscores
標準フィールド: テーブルをキャプチャし、最初のドットの後にすべてをキャプチャします
$table.field
$table.field.subfield
$table.field.subfield_with_underscores
$table.field_with_underscores
$table.field_with_underscores.subfield
$table.field_with_underscores.subfield_with_underscores
カスタム フィールド: テーブルをキャプチャし、c$ の後のすべてをキャプチャします
$table.c$field
$table.c$field_with_underscores
カスタム オブジェクト システム属性: テーブルのキャプチャ、オブジェクトのキャプチャ、$ の後のすべてのキャプチャ
$table.object$field
$table.object$field_with_underscores
これまでのところ、私は次のものを持っています:
変数: ワーキング
^\$[a-zA-Z_]+$
標準フィールド: 機能しない、カスタム オブジェクト システム属性を取得する
\$([a-zA-Z_]+)\.([^c\$][a-zA-Z_\.]+)[\,]?
カスタム フィールド: 作業中
\$([a-zA-Z_]+)\.[c]\$([a-zA-Z_]+)
カスタム オブジェクト システム属性: 動作中
\$([a-zA-Z_]+)\.(?!c\$)([a-zA-Z_]+)\$([a-zA-Z_]+)
誰かが私を助けることができますか?抜かなければならない髪がすぐになくなりました... :\