-1
votes

Comment utiliser Regex pour les dossiers sans fichiers?

J'essaie d'utiliser RegEx (PHP) pour capturer le chemin des dossiers avec des fichiers exclus.

J'ai ces chemins, par exemple: xxx

jusqu'à présent je "J'ai essayé: xxx

Ça fonctionne, à l'exception de C : \ Query

J'ai aussi essayé: xxx

mais c'est pire.


1 commentaires

Pourquoi ne fonctionne-t-il pas? Pouvez-vous définir ce qu'est un modèle valide? Pourquoi c: \ apps \ office valide alors que c: \ requête n'est pas? Quel est le rendement attendu de votre exemple de données?


3 Réponses :


-1
votes

donner ce modèle un essai:

^ (?: [A-Z]: | \\) \\ (?: [\ w \\] + \\)?

Demo: https://regex101.com/r/8enfu8/2

Votre utilisation de [^.] + est en train de couvrir votre correspondance sur plusieurs lignes.


1 commentaires

Merci mais malheureusement c: \ Query n'est pas capturé



0
votes

regarder c: \ apps \ office code> Il est impossible de dire si c'est le nom d'un répertoire ou le nom d'un fichier nommé bureau code> dans un répertoire nommé C: \ Apps code>. De même, C: \ apps \ Safe \ Paramètres.ini code> pourrait être le nom d'un répertoire. Je dois donc supposer que tous les exemples que vous avez montrés devraient être également valables. Sinon, vous devez mettre à jour votre question pour mieux définir ce qui est précisément que vous recherchez en termes d'entrée et de sortie. Mais sur la base de mon interprétation de votre question, il semble que vous souhaitiez reconnaître C: \ requête code> et donc,

la regex que vous devriez vouloir est: p>

^((?:[A-Za-z]:\\|\\\\)(?:[^\\\n.]+)(?:\\[^\\\n.]+)*)(?!.*?\....)(?:.*?)$


2 commentaires

Disons que mes fichiers ont une extension avec 3-4 mots: .ini, .docx et mes dossiers n'ont pas de point. Y a-t-il une solution? Si non, je pourrais insérer une condition dans mon programme: dossier comme C: \ Query avec ^ (?: [A-Za-Z]: \\ | \\\\) (\ w +) $


La réponse postée par @thefourthbird est vraiment le meilleur moyen de résoudre le problème. Pourquoi n'est-ce pas acceptable pour vous? Votre façon dont vous ne seriez que correspondant c: \ apps \ Safe \ Paramètres.ini dans vos exemples, si je vous comprends correctement.



1
votes

Autre alternative à l'utilisation d'une regex, vous pouvez utiliser PATHINFO et vérifier l'extension: xxx pré>

sortie p> xxx pré>

voir un Démo PHP P>


Si vous ne voulez pas correspondre à un nom de fichier avec une extension spécifique: P>

^(?!.*\.(?:ini|docx)?$)[^\\\r\n]*(?:\\+[^\r\n\\]+)+$


1 commentaires

Merci, mais si j'utilise Regex pour PHP, mon programme est une langue d'auto-assistance.