完整的Sql Server Management Studio的Regex语法

age*_*t-j 11 regex ssms replace

是否有Sql Server Management Studio中使用的正则表达式语法的完整描述?例如,必须有一种方法可以进行否定前瞻,但查找/替换对话框不会列出一个.

Tao*_*Tao 6

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 2016之前,SSMS没有效仿并调整标准正则表达式.

  • 知道这是一个老帖子,但这个答案对于Visual Studio 2012和更新版本是错误的.SSMS中的正则表达式不再与Visual Studio中的正则表达式相同.(Visual Studio抛弃了它的古怪方言,用于更标准的实现.SSMS没有.)我已经发布了与最新版SSMS相关的答案. (2认同)

Svd*_*ner 6

SSMS使用了一个qurky RegEx实现,它与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."
Run Code Online (Sandbox Code Playgroud)

我所看到的古怪的SSMS方言的唯一好处是它确实包含许多其他引擎中没有的内置字符类.
例子:

Math symbol       :Sm   Matches +, =, ~, |, <, and >.
Currency symbol   :Sc   Matches $ and other currency symbols.
Run Code Online (Sandbox Code Playgroud)

对于那些已经在其他地方使用常规表达的人的说明:

实际上,除非你打算大量使用它包含的自定义组,否则你可能不值得花时间去学习这种奇怪的正则表达方言.将您的查询复制到具有更标准实现的编辑器(visual studio 2012或更高版本,notepad ++等),您将获得更好的服务.