1

次のファイル パスを検討してください。

\\fileserver\share\documents\department\my_project\a_sub_folder\myfile.doc

「\documents\department\my_project」というテキストを正規表現で抽出する必要があります。詳細:

  • 「fileserver」と「share」を除外
  • 後に 3 つの「論理」トップ レベル フォルダーに制限し、「\a_sub_folder」を除外します。
  • ファイル名を含めない ("myfile.doc")

次の正規表現を使用..:

^.*share(?P<folders>\\.+)\\.+

..「フォルダ」グループでこれを取得します。

\documents\department\my_project\a_sub_folder

私を悩ませているのは、「a_sub_folder」を取り除く方法です。繰り返し演算子をフォルダーグループに追加しようとしましたが、効果はありません:

^.*share(?P<folders>\\.+){1,3}\\.+
^.*share(?P<folders>\\.+){1,3}?\\.+

上記の 2 つのうち最初のものは出力を変更しませんが、2 つ目は空のグループ「フォルダー」を返します。

私の正規表現は根本的に間違っていると感じていますが、その理由はわかりません。誰でもこれに光を当てることができますか?

ありがとう :)

/ゲイル

4

1 に答える 1

1

どうですか:

^.*share(?P<folders>(?:\\[^\\]+){1,3})
于 2012-03-14T15:16:09.667 に答える