Domanda

Considera il seguente percorso del file:

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

Devo estrarre il testo "\ Documents \ Department \ My_Project" con un'espressione regolare.Dettagli:

    .
  • escludere "fileserver" e "condividi"
  • Limita a 3 cartelle di livello superiore "logiche" dopo, escluso così "\ a_sub_Folder"
  • Non includere il nome del file ("myfile.doc")

Usando il seguente regex ..:

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

.. Io ottengo questo nel mio gruppo "cartelle":

\documents\department\my_project\a_sub_folder
.

La parte che mi nava è come sbarazzarsi di "a_sub_folder".Ho provato ad aggiungere operatori di ripetizione alle cartelle-gruppo senza alcun effetto:

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

Il primo dei due sopra non cambia l'uscita, mentre il secondo restituisce un gruppo vuoto "cartelle"

Ho la sensazione che il mio regex sia fondamentalmente sbagliato, ma incapace di capire perché.Qualcuno può per favore far luce?

Grazie :)

/ GEIR

È stato utile?

Soluzione

Che ne dici di:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top