Sql Server Management Studio 的完整正则表达式语法

发布于 2024-11-17 01:24:23 字数 90 浏览 5 评论 0原文

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

Is there a complete description of the regular expression syntax used in Sql Server Management Studio? There must be a way to do negative lookaheads, for example, but the find/replace dialog doesn't list one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一抹微笑 2024-11-24 01:24:23

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 才效仿并采用标准正则表达式。

SSMS versions 2005-2012 are really just modified/customized Visual Studio Shell (2005-2010) environments, so this Visual Studio (2005-2010) Regular Expression reference applies:

http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.80).aspx

Visual Studio 2012 and later have switched to standard .Net regular expressions.

However SSMS did not follow suit and adapt standard regular expressions until SSMS 2016.

三五鸿雁 2024-11-24 01:24:23

SSMS 使用一种古怪的 RegEx 实现,它与 Visual Studio 和 .NET Regex 类中使用的实现非常不同。

可以在 MSDN 上找到完整列表(如果其功能及其相应语法)

即使有其奇怪的正则表达式方言的文档,您可能会发现它的功能集非常缺乏。 (示例:它不支持“?”运算符等基础知识,也不支持诸如正向环顾之类的有用的高级功能。)您可以使用以下语法进行负向环顾:

阻止匹配 ~(X) 当 X 出现在列表中的此时时阻止匹配
                         表达。例如,real~(ity) 匹配“real” 
                         “真实”和“真的”,但不是“现实”中的“真实”。

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

数学符号 :Sm 匹配 +、=、~、|、< 和 >。
货币符号 :Sc 匹配 $ 和其他货币符号。

对于那些已经在其他地方使用正则表达式的人请注意:

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

SSMS uses a qurky RegEx implementation that is very different from what is used in Visual Studio and in the .NET Regex class.

A complete list if its capabilities and their corresponding syntax can be found here at MSDN.

Even with the documentation to its bizarre dialect of regular expressions, you may find its feature set quite lacking. (Examples: It doesn't support basics like the "?" operator or useful advanced things like positive look around.) You can do negative look arounds with this syntax:

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."

The only benefit I've seen of the quirky SSMS dialect is that it does contain a lot of built-in character classes not seen in many other engines.
Examples:

Math symbol       :Sm   Matches +, =, ~, |, <, and >.
Currency symbol   :Sc   Matches $ and other currency symbols.

NOTE FOR THOSE WHO ALREADY USE REGULAR EXPRESSIONS ELSEWHERE:

Realistically, unless you intend on making a LOT of usage of the custom groups it contains, it probably will not be worth your time to learn this bizarre dialect of Regex. Copy your query over to an editor with a more standard implementation (visual studio 2012 or later, notepad++, etc.) and you will be better served.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文