如何使用SSMS 2016正则表达式替换功能删除行尾的额外空格和制表符?
编辑内容示例:
select
'tab'
, 'space'
select
'tabs'
, 'spaces'
目标:
select
'tab'
, 'space'
select
'tabs'
, 'spaces'
在SSMS 2012中,查找字符串:b*$
匹配那些额外的标签和空格,并允许我替换它们。 SSMS 2016开始使用某种.net正则表达式语法进行查找/替换功能。使用\s+$
几乎可以在2016年使用,但它会删除空行。
答案 0 :(得分:4)
要使用.NET正则表达式删除行末尾的尾部水平空格,您需要使用
(?m)[\p{Zs}\t]+$
多线修饰符(?m)
是使行的$
锚点匹配结束而非整个字符串所必需的。 \p{Zs}
匹配任何Unicode 水平空格但是匹配标签字符,因此,我们需要将\t
和\p{Zs}
添加到字符类[...]
中。 +
量词将匹配这些空格的一次或多次出现。
不依赖于多线修改器的替代方案:
[^\S\r\n]+(\r?\n|$)
并替换为$1
反向引用(通过模式中的第一个(也是唯一的)捕获组重新插入文本捕获的,即保留输出中的行尾。)
<强>详情:
[^\S\r\n]+
- 匹配除非空格,CR和LF之外的1个或多个字符(基本上是\s
,\r
和\n
除外(\r?\n|$)
- 在该行的末尾匹配(可选 CR,回车,必须 LF,< em> newline )或在字符串($
)的末尾。