1

PHPで正規表現を使用してメソッド/関数の終わりを見つける方法が必要です。しかし、これが可能かどうかは疑問です。

関数は明らかに常に閉じ括弧で終わりますが、 ,やステートメントなども}そうです...if/elseforwhile

関数の最後の括弧を見つけて正規表現に置き換える方法はありますか?

だから私は以下を置き換えることができるはずです:

public function func1 ( $someParam )
{
    if ( $someParam ) {

    }
    else {

    }
}

これに:

public function func1 ( $someParam )
{
    if ( $someParam ) {

    }
    else {

    }

}]; // <-- note the square bracket and semi-colon
4

1 に答える 1

3

正規表現は、この仕事には不適切なツールです。正規表現は、さまざまなネスト レベルや、関数内で見つかる可能性のある多くのものをすべて処理することはできません。上記のコメントで mario と Matt Lo が示唆したように、テキストを解析してコードの真の構造を判断するものを使用する必要があります。

PHP は、正規表現で解析する必要がある通常の言語ではありません。それは BNF にあり、そのように解析する必要があります。(つまり、正規表現を使用することもできますが、あなたは自分自身を悪い時間に設定しています.あなたの空想をくすぐるなら、子猫にちなんですべての変数に名前を付けることもできます.)

投稿されたトークナイザーマリオは、コードを構文ツリーに移動し、ツリーをコードに戻すことができるため、ここで最善の策となる可能性があります。使用に問題がある場合は、必ず新しい質問でフォローアップしてください。そのライブラリの作者はまだこのサイトで活動していると思います。

于 2012-11-17T19:38:05.293 に答える