Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不匹配报价中项目的正则表达式_Sql_Regex - Fatal编程技术网

Sql 不匹配报价中项目的正则表达式

Sql 不匹配报价中项目的正则表达式,sql,regex,Sql,Regex,所以我试图找出一个正则表达式,但遇到了一些问题。我要查找(匹配)的是大型脚本文件中的所有SQL参数,但不匹配单引号中的项(例如电子邮件地址)。例如: INSERT INTO [User] ( [UserGuid], [CompanyGuid], [Name], [EmailAddress] ) VALUES ( @UserGuid1, @CompanyGuid, 'Jason', 'jason@jason.com' ) 与@UserGuid1和@CompanyGuid匹配,但不与@

所以我试图找出一个正则表达式,但遇到了一些问题。我要查找(匹配)的是大型脚本文件中的所有SQL参数,但不匹配单引号中的项(例如电子邮件地址)。例如:

INSERT INTO [User]
(
   [UserGuid], [CompanyGuid], [Name], [EmailAddress]
) VALUES (
   @UserGuid1, @CompanyGuid, 'Jason', 'jason@jason.com'
)
@UserGuid1
@CompanyGuid
匹配,但不与@jason匹配。我一直在使用这个正则表达式:

(@+[\w]+)
但它与电子邮件地址相匹配,所以我试着做一个消极的前瞻/回顾,如下所示:

(?<!')[\W](@+[\w]+)[\W](?!')

有人知道我错过了什么吗?可以说:“任何不在报价集中的东西?”。此外,可以安全地假设平衡的报价集。

(@+[^']+)应该会有所帮助。[^',]将匹配除单引号、空格或逗号以外的任何内容。您可能需要再添加几个字符,但这只是一般的想法。

(@+[^']+)应该会有所帮助。[^',]将匹配除单引号、空格或逗号以外的任何内容。您可能需要再添加几个字符,但这是总体思路。

您尝试过以下方法吗

(?<=\W)(@\w+)

你试过下列方法吗

(?<=\W)(@\w+)
试试这个:

(?试试这个:


(?我认为这行不通,因为第二个示例text.fixed now中的参数前面没有空格(过度工程会让用户感到沮丧,jeff)好的,这似乎是可行的,但它会匹配像“@something”这样的项目,这些项目不是电子邮件地址,而是引用的输入。添加引用的前/后选项会有帮助,比如:(?不,这是必要的。我的正则表达式是说,匹配之前必须有任何非单词,只有一个引号。这是为了防止类似(“@text”)的内容如果我能更好地理解look behind,我可能会进一步压缩它,但指定前面的字符不是引号是绝对必要的。因此,它前面不能有单词或引号,换句话说,
(?我认为这不可行,因为在第二个示例text.fixed now(过度工程化会让用户感到沮丧,jeff)中的参数前面没有空格。好的,这似乎可行,但它会匹配像“@something”这样的项目,这些项目不是电子邮件地址,而是引用的输入。添加引用的前/后选项会有所帮助,就像这样:(?不,这是必要的。我的正则表达式所说的是,匹配之前必须有除单引号之外的任何非单词。这是为了防止类似(“@text”)的事情发生如果我能更好地理解look behind,我可能会进一步压缩它,但指定前面的字符不是引号是绝对必要的。因此,它前面不能有单词或引号,换句话说,
(?是的,这正是我的评论所说的。我不想卷入一场网络争论,但如果你测试它,你会发现我是对的。我使用的是这个测试仪:我不是说你错了,我是说,在你回答之前,在评论中实际上发布了同样的内容。此外,OP写道,假设平衡报价集是安全的s、 所以前瞻检查又是多余的。哦,明白了。我没有看到你的最后一条评论,因为它是第六条,而且是隐藏的,我继续查找。不用担心:-)不过,从长远来看,这是一个很好的观点。是的,这正是我的评论所说的。我不想卷入一场网络争论,但如果你测试一下,你会发现我是对的。我使用的是这个测试仪:我不是说你错了,我是说,实际上,在你回答之前,同样的东西也被贴在了评论中。此外,OP写道,我假设平衡报价集是安全的,所以前瞻性检查又是多余的。哦,明白了。我没有看到你的最后一条评论,因为它是第六条,而且是隐藏的,我继续查找它。不用担心:-)不过,在前瞻性上,这一点很好。
(?<![\w'])(@\w+)