SQL Server Management Studio中使用的正则表达式语法是否有完整的描述?例如,一定有一种方法可以执行负向先行断言,但查找/替换对话框没有列出它。
SSMS使用的正则表达式实现与Visual Studio和.NET Regex类中使用的实现非常不同。
可以在MSDN上找到其完整功能及其相应语法的列表,点击此处可查看。
即使有关它怪异方言的正则表达式文档,您可能会发现它的功能集相当缺乏。 (例如:它不支持基本操作符如“?”,也不支持实用的高级操作如正向前瞻。)您可以使用以下语法进行负向前瞻:
Prevent match ~(X) Prevents a match when X appears at this point in the
expression. For example, real~(ity) matches the "real"
in "realty" and "really," but not the "real" in "reality."
我发现奇怪的SSMS方言唯一的好处是它包含了许多其他引擎中没有的内置字符类。
例如:
Math symbol :Sm Matches +, =, ~, |, <, and >. Currency symbol :Sc Matches $ and other currency symbols.
实际上,除非您打算大量使用其中包含的自定义组,否则学习这种奇怪的Regex方言可能不值得您花费时间。将您的查询复制到具有更标准实现的编辑器(如Visual Studio 2012或更高版本、Notepad++等)中,效果会更好。
SSMS 2005-2012版本实际上只是修改/定制的Visual Studio Shell(2005-2010)环境,因此适用于此Visual Studio(2005-2010)正则表达式参考:
http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.80).aspx
Visual Studio 2012及更高版本已切换到标准的.NET正则表达式。
但是,SSMS直到SSMS 2016才跟随并采用标准正则表达式。