Regex pour remplacer les caractères que Windows ne l'accepte pas dans un nom de fichier

Je suis en train de construire une expression régulière qui permet de détecter tous les caractères que Windows n'accepte pas qu'une partie d'un nom de fichier (ce sont les mêmes pour les autres OS? Je ne sais pas, pour être honnête).

Ces symboles sont:

 \ /: * ? "| 

De toute façon, c'est ce que j'ai: [\\/:*?\"<>|]

Le testeur sur au http://gskinner.com/RegExr/ montre de ce travail.
Pour la chaîne Allo*ha, le * symbole s'allume, la signalisation, il a été trouvé. Dois-je saisir Allo**ha toutefois, seul le premier * s'allume. Donc, je pense que j'ai besoin de modifier cette regex pour trouver toutes les apparences des personnages, mais je ne suis pas sûr.

Vous voir, en Java, je suis assez chanceux pour avoir la fonction Chaîne de caractères.replaceAll(String regex, Chaîne de remplacement).
La description dit:

Remplace chaque sous-chaîne de la chaîne qui correspond à l'expression régulière donnée avec la donnée de remplacement.

Donc, en d'autres termes, même si la regex ne trouve que la première, puis arrête la recherche, cette fonction sera encore les trouver tous.

Par exemple: String.replaceAll("[\\/:*?\"<>|]","")

Cependant, je ne me sens pas que je peux prendre ce risque. Si quelqu'un sait comment je peux étendre cette?

  • -1 en faire une qeustion et de nous dire la langue ou le contexte que vous utilisez et je vais vous donner votre vote à l'arrière
  • Je voudrais aussi savoir ce que la langue de votre aide.
  • Sachez que, parce que votre regex est sous la forme d'une application Java littéral de chaîne, vous devez double-barres obliques inverses: "[\\\\/:*?\"<>|]". La façon dont vous l'aviez, vous étiez juste de s'échapper de la barre oblique (ce qui n'est pas nécessaire, mais ce n'est pas une erreur).
  • Encore une chose: Si vous essayez de créer regexes qui fonctionne en Java native de regex, vous devez utiliser un testeur qui est alimenté par Java, comme celui-ci: fileformat.info/tool/regex.htm (RegExr utilise ActionScript du moteur d'expressions régulières.)
  • Vous pouvez également essayer différents de la Chaîne.replaceAll() dans la série comme ceci: YourString.replaceAll("[^A-Za-z0-9_.\\s-" + Fichier.séparateur + "]*", "").replaceAll("^\\s", "").replaceAll("\\s$", ""));
  • Quelle est la meilleure expression régulière qui va permettre à autant de caractères pris en charge que possible , sur Linux (ou, plus précisément, sur Android) ?
  • Voir aussi stackoverflow.com/questions/1155107/...

InformationsquelleAutor KdgDev | 2009-04-16