2011-10-18 12 views
0

exapmle中括弧内のテキストを解析しますが、内括弧で停止しませんか?

function hello(){ 
    echo 'hello'; 
    foreach (array(1,2,3) as $n) 
    { 
     echo $n; 
    } 
    echo 'bye-bye'; 
    echo 'bye-bye'; 
    echo 'bye-bye'; 
} 
function hi(){} 

私は私の結果は文句を言わないでその

{ 
    echo 'hello'; 
    foreach (array(1,2,3) as $n) 
    { 
     echo $n; 
    } 

または

{ 
    echo 'hello'; 
    foreach (array(1,2,3) as $n) 
    { 
     echo $n; 
    } 
    echo 'bye-bye'; 
    echo 'bye-bye'; 
    echo 'bye-bye'; 
} 
function hi(){} 
+0

どういう意味ですか?あなたが望んでいない問題の行を単に削除しないでください。 – hakre

答えて

1

ようになり、任意の内側の中括弧を無視して、外側の中括弧の間にあるすべてのものを必要とします通常の場合、これは正規表現では実行できません。タスク用に設計されたパーサーを使用するか、独自のパーサーを作成する必要があります。

基本機能の場合は、一度に1文字ずつ読み込み、任意の1点で閉じられていない中括弧の数をカウントし、この数が1から0に減少するときに解析を完了することを検討してください。

次のステップは、一般的な文字列リテラル(一重引用符と二重引用符)を認識し、それらの文字列のリテラル中カッコを正しくスキップすることです。

更新:here's an asnwer同様の問題にはサンプルコードも含まれています(ただし、PHPではなくC#です)。

+0

+1このようなタスクにはパーサーを使用する必要があります。 – FailedDev

関連する問題