Quel système d'exploitation, environnement ou langage de programmation utilisez-vous?
Steven
windows, environment ne sais pas ce que vous voulez dire, mais pour le moment, c’est en intégration et en langage qu’un regEX java serait bon ... un peu comme celui-ci, j’ai "^. +? \ SPM _. + $" mais il sert évidemment un purpose
user3738022
1
Quelle est l'entrée? Quelle est la sortie? Est-ce un fichier? Est-il utilisé dans un contexte de programmation avec Java? Script par lots?
Samir
L'entrée est une requête xpath qui donne cette sortie, son utilisation dans un contexte de programmation avec Java oui. Donc, une impression, écrire dans un fichier ne sera pas appropriée. La seule chose qui serait acceptable est une expression régulière. J'ai eu ce "^. + \ - old. + $" Mais c'est le contraire qui a été fait au lieu de tout supprimer avec -old
user3738022.
Réponses:
3
Je pense que vous avez un malentendu à propos des expressions régulières. Ils répondent fondamentalement à la question "ce texte ressemble-t-il à ce modèle particulier?" Il existe de nombreux outils qui utilisent des expressions régulières pour manipuler du texte, comme sedou grep, et je pense que vous confondez les deux.
Ce que vous devez faire est de former une expression régulière qui correspond au texte que vous souhaitez filtrer. Par exemple, l'expression que vous recherchez est ^.*-old\|$, et filtrez les lignes en utilisant quelque chose comme ceci.
foreach line in input_file
if regex.matches(line, "^.*-old\|$") then
continue
else
print line
Ok, je suis nouveau dans tout cela, alors je mélange mes termes, j'ai essayé l'expression seule et il ne fait rien, il ne supprime pas les lignes avec -old. Je
user3738022
J'ai essayé cette expression rationnelle "^. + \ - old. + $" Mais au lieu de supprimer ces lignes, il les garde
user3738022
En second lieu, les expressions rationnelles sont utilisées pour "répondre à la question" ou plutôt pour décrire le motif. Ils ne peuvent évidemment pas être ceux qui posent la question! ;-) Le cas échéant, c'est l'interprète qui pose la question "que voulez-vous que je cherche?".
Samir
Bon alors que puis-je utiliser pour filtrer cela et obtenir le résultat souhaité d'avoir toutes les lignes contenant -old supprimés
user3738022
@ user3738022 Le pseudo-code fourni par Nat affichera toutes les lignes qui ne correspondent pas à l'expression régulière. Si vous voulez pouvoir le retourner à une autre fonction en Java, vous pouvez créer un StringBuilder et l'ajouter lineà la elseclause au lieu de l'imprimer.
Merci mais comme vous l'avez dit la partie difficile trouver une version de Windows pour grrp ou egrep je ne veux pas utiliser cmd et powershell. Puis-je ne pas changer cette commande afin qu'elle supprime les lignes avec ancien au lieu de ne sélectionner que celles: ^. +? \ - old. + $
Réponses:
Je pense que vous avez un malentendu à propos des expressions régulières. Ils répondent fondamentalement à la question "ce texte ressemble-t-il à ce modèle particulier?" Il existe de nombreux outils qui utilisent des expressions régulières pour manipuler du texte, comme
sed
ougrep
, et je pense que vous confondez les deux.Ce que vous devez faire est de former une expression régulière qui correspond au texte que vous souhaitez filtrer. Par exemple, l'expression que vous recherchez est
^.*-old\|$
, et filtrez les lignes en utilisant quelque chose comme ceci.la source
line
à laelse
clause au lieu de l'imprimer.Ce dont tu as besoin c'est
ou ce qui devrait fonctionner de la même manière:
Maintenant, le plus difficile est de trouver une version Windows de
grep
ouegrep
exécutée à partir de cmd.exe ou de Powershell.la source
negative lokahead
pourrait fonctionner, selon votre moteur de regex.