0

一部のフィールド名を代入式から分離する正規表現があります。これまでフィールド名は正規表現が問題なく機能するほど正常でしたが、フィールド名に不正な文字が使用されているため (言語構文の観点から、この場合は AS3)、私が開発した正規表現は苦労しています。問題の前、後、および詳細をお伝えするのがおそらく最善です。

私の現在の正規表現は次のようになります: this\.(.*)?[=,]. =フィールド名にまたは,文字が含まれていなかったため、これまでは機能していました。ただし、コードが難読化され、フィールド名が不正になる原因となっているようで、機能しません。代入式の前は次のようになりました。

this._-E12=_arg1.readInt();

当時、正規表現は find と capture で機能していました_-E12。代入式は次のようになります。

this.^"-=,#I.readInt();

ご想像のとおり、正規表現はこれをあまり好まず、代わり^"-=に実際にキャプチャする必要がある場所をキャプチャ^"-します。正規表現の,は、次のような行を一致させるために使用されるだけでなく、理由もあります_arg1.readBytes(this._-E12, 0, count);

私が探しているのは、=キャラクターの最後のインスタンスを見つける方法ですが、次のような行が得られないことを約束する方法がないため、それも完全な解決策とは言えませんthis.^"-=,=I.readInt();

これはばかげた質問かもしれませんし、正規表現でこれを行う方法はないかもしれません。


いくつかのより具体的な例については、ここに私が探しているものがあります:

this.^"-=,#I.readInt();一致します^"-

arg1.readBytes(this.^"-, 0, count);一致します^"-

this.0$R=readInt();一致します0$R

arg1.readBytes(this.0$R, 0, count);一致します0$R

this.^=s=readInt();一致します^=s

arg1.readBytes(this.^=s, 0, count);一致します^=s

this.$s==readInt();一致します$s=

arg1.readBytes(this.$s=, 0, count);一致します$s=

4

2 に答える 2

0

次のような文字の最後のインスタンスを一致させる=ことが可能です。

.*=[^=]*

0 個以上の任意の文字の後に が続き、=その後に 0 個以上の非=文字が続きます。

ただし、一致させたいケースを明確に指定する必要があります。=これらの極端なケースでは、フィールド/値として一致する必要があります。

于 2013-05-07T09:43:13.267 に答える