Je suis en train de trouver une expression régulière et ai quelques questions. Ce que je veux trouver (correspondre) est tous les paramètres SQL dans un grand fichier de script, mais ne correspondent pas aux éléments entre guillemets simples (tels que les adresses e-mail). Par exemple:RegEx pour ne correspond pas à des articles dans une citation
INSERT INTO [User]
(
[UserGuid], [CompanyGuid], [Name], [EmailAddress]
) VALUES (
@UserGuid1, @CompanyGuid, 'Jason', '[email protected]'
)
Avec @UserGuid1
et @CompanyGuid
correspondant, mais pas correspondant @ Jason. J'utilise ce RegEx:
(@+[\w]+)
Mais il correspond à l'adresse e-mail, donc j'ai essayé de faire un regard négatif comme avant/derrière ceci:
(?<!')[\W](@+[\w]+)[\W](?!')
mais il est correspondant à la « (» dans l'exemple suivant:
INSERT INTO [User] ([UserGuid]) VALUES (@UserGuid1)
Quelqu'un a une idée de ce que je manque quelque chose ici qui peut dire: « ? tout ce qui est pas dans un ensemble de devis » en outre, il est raisonnable de supposer des ensembles de devis équilibrés..
Je ne pense pas que cela fonctionne, car il n'y a pas d'espace avant le paramètre dans le second exemple de texte. –
fixé dès maintenant (overenginneering engendre la frustration des utilisateurs, jeff) – SilentGhost
OK, qui semble fonctionner, mais il correspondra à des articles comme « @something » qui ne sont pas les adresses e-mail, mais sont entrées citées. Ajout des lookahead/behinds pour les citations contribuerait, comme suit: '(@ \ w +) (?!) –