Retirez les supports avec expression régulière en C#
Je veux supprimer les crochets à partir d'une chaîne SQL, mais seulement là où il n'y a pas d'espace à l'intérieur d'eux.
E. g. "SÉLECTIONNEZ [intId], [La Description]" retour ", SÉLECTIONNEZ intId, [La Description]".
Je peux obtenir les crochets sans les espaces à l'intérieur avec l'expression régulière:
\[[^\s]*\]
Comment les crochets de ces correspondances doit être supprimé dans la chaîne d'origine?
Êtes-vous sûr de vouloir faire cela? Ce sujet entre crochets dans les littéraux de chaîne? Ou des noms de colonnes qui correspondent à des mots réservés?
Absolument, je sais qu'il y a des pièges ici. Je suppose que mon problème plus général est la façon dont vous pouvez remplacer l'expression régulière correspond à quelque chose de le match lui-même. Je comprends que maintenant, avec l'aide de cet exemple. Ce remplacement devra être effectué seulement après que la chaîne a fait l'objet de l'analyse.
Absolument, je sais qu'il y a des pièges ici. Je suppose que mon problème plus général est la façon dont vous pouvez remplacer l'expression régulière correspond à quelque chose de le match lui-même. Je comprends que maintenant, avec l'aide de cet exemple. Ce remplacement devra être effectué seulement après que la chaîne a fait l'objet de l'analyse.
OriginalL'auteur Paul | 2009-02-06
Vous devez vous connecter pour publier un commentaire.
Cela peut avoir des problèmes avec les parenthèses imbriquées. Si c'est le cas ou pas sorte de repose sur les règles de syntaxe, vous avez affaire. [foo[bar baz]] sera finissent par être remplacés par des foo[bar baz].
Pour
SELECT [intId],[intId2], [The Description], [init[x]]
cela renvoieSELECT intId],[intId2, [The Description], init[x]
. Si vous modifiez * (gourmand)*? (non-greedy) le résultat seraitSELECT intId,intId2, [The Description], init[x]
.OriginalL'auteur Sean Bright
Regex n'est pas assez, sauf que dans un seul chemin sur votre chaîne particulière. Si vous faites cela de manière automatisée sur de nombreuses SQL lignes, vous pouvez obtenir dans un tas d'ennuis retrait de supports dont vous avez besoin.
Dans ce cas, vous avez besoin de plus d'une SQL lexer/parser qui peuvent vous aider à vous concentrer vers le bas sur les noms de colonnes seulement et exclut les noms de table, les chaînes, les paramètres des déclencheurs ou des fonctions, etc...
OriginalL'auteur alphadogg