1

正規表現を使用してアプリケーション パス内の "system" フォルダーを見つけ、それを "counters" に置き換えようとしています。しかし、私の正規表現パターンは私に満足していません。アプリのパスを表す文字列は $counterslocation と呼ばれ、次のようになります。

「/var/www/myapp/システム」

最終的に、私はこれで終わりたいと思います:

/var/www/myapp/カウンター

まず、パターンが正しいことを確認するために preg_match を使用しています。次に preg_replace を試してみます。正規表現には次のコードがあります。

    $pattern='/(\/[0-9a-z]\/)*(myapp\/)(system)/i'; 

    if (preg_match($pattern,$counterslocation,$matches))  {
       var_dump($matches);
    }

var_dump() 呼び出しは、次の出力を返します。

配列(4) { [0]=> 文字列(10) "myapp/システム" [1]=> 文字列(0) "" [2]=> 文字列(4) "myapp/" [3]=> 文字列( 6)「システム」

私の質問は、文字列の「myapp」部分に至るまでのすべてを正規表現で返すにはどうすればよいですか? 括弧に入れて最初のグループとしてキャプチャされると思ったのですが...何か間違っているようです。

ありがとう。

4

2 に答える 2

2

ディレクトリ名を数値化していないため、単一の英数字のディレクトリと一致しました。必要なもの:

/(\/[0-9a-z]+\/)*(myapp\/)(system)/
            ^
于 2013-01-14T16:41:46.713 に答える
0

抽出する部分の周りに()を追加し、理想的には別の区切り文字を使用して、スラッシュをエスケープする必要がないようにします。

%((/([0-9a-z]+/)*)(myapp/))(system)%
于 2013-01-14T16:44:21.843 に答える