次のスクリプトを検討してください(疑似言語ではまったくナンセンスです):
if (Request.hostMatch("asfasfasf.com") && someString.existsIn(new String[] {"brr", "hrr"})) {
if (Requqest.clientIp("10.0.x.x")) {
somevar = "1";
}
somevar = "2";
}
else {
somevar = "first";
}
string foo = "foo";
// etc. etc.
if-block のパラメータと内容をどのように取得しますか? if ブロックの形式は次のとおりです。
if<whitespace>(<parameters>)<whitespace>{<contents>}<anything>
String.split()
の正規表現パターンで使用してみまし^if\s*\(|\)\s*\{|\}\s*
たが、これは惨めに失敗します。つまり、問題は) {
内側の if ブロックにも}
見られ、多くの場所で閉じが見られることです。ここでは、怠惰な拡張も熱心な拡張も機能しないと思います。
だから...これを正規表現で実装するためにここで必要なものへのポインタはありますか?
また、if ブロックのコードなしで残りの文字列を取得する必要があります (コードは から始まりますelse { ...
)。解析された部分の長さに関する情報がないため、使用String.split()
するのは難しいようです。
私は最初にこれのためにループベースのソリューションを(String.substring()
頻繁に使用して)作成しましたが、それは退屈です。代わりにもっと派手なものが欲しいです。正規表現を使用するか、代わりに解析可能な文字列とパターンを取るカスタムの汎用関数 (これ以外にも多くのケースがあります) を作成する必要があります (if<whitespace>(...
上記のパターンを考慮してください)。
編集:そうでなければ意味がなかったので、変数の割り当てに変更されました。