1

フィールドタイプのセットを正しく識別する正規表現パターンのセットを構築しようとしていますが、それらすべてを相互に排他的に取得する方法がわかりません。これらの構文規則は常に、私が望んでいない一致を作成するのに十分な重複があるようです。


変数: すべてをキャプチャ

$フィールド

$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_]+) 

誰かが私を助けることができますか?抜かなければならない髪がすぐになくなりました... :\

4

2 に答える 2

0

私の問題は、次の方法で最もよく解決されました。

\$([\w]+)\.((?!.+\$)(\.?[\w]+)+)
于 2015-01-27T08:20:31.323 に答える
0
^\$([a-zA-Z_]+)(?:\.[a-zA-Z_\.]+)+$

標準フィールドでこれを試すことができます。デモを参照してください。

https://www.regex101.com/r/bC8aZ4/8

また

\$([a-zA-Z_]+)(?:(?!.*\$)\.[a-zA-Z_\.]+)+

https://www.regex101.com/r/bC8aZ4/9

于 2015-01-27T06:39:29.597 に答える