Les expressions régulières dans findstr
Je suis en train de faire un peu de validation de chaîne avec findstr
et ses /r
indicateur pour permettre à des expressions régulières. En particulier, je voudrais valider entiers.
La regex
^[0-9][0-9]*$
a bien fonctionné pour les non-nombres négatifs, mais depuis que j'ai maintenant en charge les nombres négatifs ainsi j'ai essayé
^([1-9][0-9]*|0|-[1-9][0-9]*)$
pour qu'elle soit positive ou entiers négatifs ou nuls.
La regex fonctionne très bien théoriquement. Je l'ai testé en PowerShell et il correspond à ce que je veux. Cependant, avec
findstr /r /c:"^([1-9][0-9]*|0|-[1-9][0-9]*)$"
il ne le fait pas.
Même si je sais que findstr
n'est pas la plus avancée de la regex de soutien (même en dessous de Notepad++ qui est probablement tout à fait un exploit), je me serais attendu à de telles expressions simples pour travailler.
Les idées de ce que je fais mal ici?
- Note de l'éditeur: windows balise est un peu superflu, étant donné que
findstr
n'existe que là ... - Rössel: les Balises sont là pour vous aider à trouver des choses. Modéré la redondance ne fait pas de mal dans ce cas.
- Je n'avais jamais rechercher un tag comme surpeuplés comme windows 😉 mais si vous pensez que ça va aider ...
- et n'oubliez pas le tag d'utilisation de filtre de poser des questions. Ceux surpeuplées tags: windows, linux, apple, ce sont des très commode d'ignorer
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne pour moi:
Si vous n'utilisez pas le
/c
option, le<Strings>
argument est traité comme un espace séparé liste de chaînes de recherche, qui fait de l'espace une sorte de brut de remplacement pour le|
construire. (Tant que votre regexes ne pas contenir d'espaces, ce qui est.)Argh, j'aurais du le lire la documentation mieux.
findstr
apparemment ne supporte pas les alternances (|
).Donc je suis probablement revenir à de multiples appels ou le remplacement de toute la chose avec un parseur personnalisé par la suite.
C'est ce que je fais pour l'instant:
Ou si vous le pouvez, télécharger grep pour windows.. Beaucoup plus de fonctionnalités que
findstr
fournit.findstr
invocations devraient suffire. Aussi, si c'était juste pour les fonctionnalités que je venais de l'appeler PowerShell. Beaucoup plus facile, beaucoup plus puissant.Plus simple
regex
qui réalise la même chose est possible, il suffit d'ajouter une option de moins pour le début de l'expression originale:Soutien pour regex dans findstr est assez limité. Je suggère d'utiliser Notepad++. Le rechercher dans les fichiers option prend en charge Perl Compatible Regular Expressions, des résultats montrant nom de fichier, numéro de ligne et le texte correspondant peut être facilement copié dans un fichier texte.