一部のフィールド名を代入式から分離する正規表現があります。これまでフィールド名は正規表現が問題なく機能するほど正常でしたが、フィールド名に不正な文字が使用されているため (言語構文の観点から、この場合は 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=