【发布时间】:2020-09-04 00:53:14
【问题描述】:
我从阅读中了解到,大括号表示 SQL Server Management Studio (SSMS) 中的“查找”中的标记表达式,其中“使用正则表达式”已打开。反斜杠 n 是替换中匹配文本的占位符。即使在我进行替换之前,我也无法找到工作。例如这段文字:
这个
还有这个“查找”正则表达式模式:
{[a-z]*}
我得到“未找到以下指定文本”。如果我删除大括号,则 find 会按预期对这两个词中的每一个词产生影响。我究竟做错了什么?这是 SSMS v18.5。
【问题讨论】:
-
大括号 (
{}) 不是 REGEX 模式匹配中的特殊字符。表达式{[a-z]*}将匹配一组大括号,它们之间有 0 个或多个纯字母字符。例如{this}和{that}和{}:regex101 -
不过,有些正则表达式的风格很挑剔,试试
\{[A-Za-z]*\} -
谢谢你们。虽然我已经用查找来表述问题,但最终我需要一个功能正常的查找替换。如果没有我的特殊需求的全部细节,假设我想以“那个这个”结尾,以“这个那个”开头。
-
我知道我的替换子句可能是“ \2 \1 ”,大括号括起匹配 \n 从左到右从 1 开始计数的项目。 docs.microsoft.com/en-us/sql/ssms/scripting/… 引导我使用大括号(搜索“标记”)。我尝试使用圆括号以防文档过期,但是当我尝试替换 \2\1 时这不起作用。
-
@Larnu 在旧版本的 SSMS 中,括号是特殊的 RegEx 语法。他们允许将匹配用于替换为
\1、\2等,其中括号也可以进行分组,但不适用于\number替换模式。请在下面查看我的答案。
标签: sql-server regex replace ssms