regex 为什么在SQL Server Management Studio中找不到标记表达式?

k10s72fa  于 2022-11-18  发布在  SQL Server
关注(0)|答案(1)|浏览(135)

我从阅读中了解到,在SQL Server Management Studio(SSMS)中,大括号表示“find”中的标记表达式,“use regular expressions”处于打开状态。反斜杠n是replace中匹配文本的占位符。即使在我到达replace之前,我也无法使find工作。例如,对于以下文本:
这个东西
和这个“find”正则表达式模式:
{[a-z]*}
我得到了“以下指定的文本没有找到”。如果我删除了花括号,查找结果会像预期的那样命中这两个单词中的每一个。我做错了什么?这是SSMS v18.5。

shstlldc

shstlldc1#

问题是您试图使用过时的语法我不确定它是什么时候切换过来的,但是我有一个测试系统,上面有SQL Server 2008 R2,沿着它附带的SSMS版本,它使用旧式的SSMS正则表达式语法(我认为这是专有的,因为我从未在其他地方看到过它的使用)。
SSMS现在使用.NET正则表达式及其语法。您可以确定游标位于查询编辑器中,然后按CTRL + F来判断您的类型。如果搜寻方块(附在查询编辑器右上角)弹出(并且“Find”输入字段没有标记),则您使用的是SSMS的现代版本和.NET正则表达式。弹出一个“查找和替换”窗口(输入字段标记为“查找内容:“),说明您使用的是旧版本的SSMS沿着“特殊”版本的正则表达式。

示例

起始值:

this that

one two three four five

1.使用(较旧的语法标记表达式):

查找内容:{[a-z]+} {[a-z]+}
替换为:~\2~\1~

结果:

~that~this~

~two~one~ ~four~three~ five

1.对于较新版本的SSMS,使用(较新语法-捕获组):

查找:([a-z]+) ([a-z]+)
更换:~$2~$1~

会产生完全相同的结果。

信息

在旧版本中,“查找”/“替换”字段的右侧有一个箭头按钮,用于显示常用语法的快速列表,底部的选项是指向文档的链接。
在较新的版本中,“查找”和“替换”(从技术上讲,它们实际上是“快速查找”和“快速替换”)对话框没有任何帮助按钮。* 但是 *,如果您转到“编辑”菜单,则转到“查找和替换 ",你会看到“在文件中查找”和“在文件中替换”的选项。这两个选项将打开一个窗口,基本上是从旧版本的“查找和替换”窗口,稍微更新,但仍然标题为“查找和替换”。这个“查找和替换”窗口在“查找”和“替换”字段的右边有帮助按钮,这两个工具都有一个“正则表达式帮助”选项,它将带您找到正确的RegEx文档(链接如下)。

相关问题