2016-09-13 3 views
-1

私はperlで作業していますが、最後の2つのフォルダ名を残すために他のフォルダ名を切り捨てる際に問題があります。最後の2つのフォルダパス名の正規表現の選択

Trainings and Events 
General Office\Archive 
General Office\Office Opperations\Contacts 
General Office\Office Opperations\Office Procedures\How Tos 
public_html\Accordion\.svn\tmp\text-base 

フォルダがそれぞ​​れの最後の2人のパス名を次のようになってしまいますので、私は、フォルダのパス名を削除したいと思います:

Trainings and Events 
General Office\Archive 
Office Opperations\Contacts 
Office Procedures\How Tos 
tmp\text-base 
Office Opperations\Contacts 

アイブ氏は、最後の二つを示したいくつかの他のstackoverflowを読みますフォルダ名は選択されていますが、式を元に戻すことはできません。 (私が見つけたらリンクします)

私は現在表現をテストするために崇高なテキスト3を使用しています。

はあなたに

答えて

0

に感謝したいパターンがそれはフォルダ名の最後のビットを取得し、それを文字列全体を置き換えます

s/.+\/(.+\/.+)$/$1/g 

です。

0
(?:[^\\]*\\|^)[^\\]*$ 

実際には「最大2つ」が必要です。それ以外の場合は、「トレーニングとイベント」をキャッチしないためです。これを解決するために、私は別に2例と一致:

  • 別のフォルダ名をスラッシュに続くいずれかのフォルダ名(非バックスラッシュの任意の数)

    • 、または文字列
    • の開始終了の文字列
  • +0

    次に、選択を配列に入れるにはgrepを使用するのですか? – cacartano

    +0

    「最後の2つのフォルダパス名の正規表現の選択」を求めました。それが答えです。私はあなたがそれで何をすべきかを知らない。あなたが結果を配列にしたいのであれば、それは質問だったはずですか?また、データがファイル内か文字列か配列内にあるかどうかは指定しないでください。私はあなたのタグのためにあなたがPerlでそれを望むと仮定することができます。これらのことは確かに答えに影響を与えます。 – Amadan

    関連する問題