gpt4 book ai didi

regex - 在 SSMS 2016 中使用正则表达式替换来修剪线条

转载 作者:行者123 更新时间:2023-12-04 19:00:18 27 4
gpt4 key购买 nike

如何使用 SSMS 2016 正则表达式替换功能删除行尾的额外空格和制表符?

编辑器内容示例:

select
'tab'
, 'space'

select
'tabs'
, 'spaces'

目标:
select
'tab'
, 'space'

select
'tabs'
, 'spaces'

在 SSMS 2012 中找到字符串 :b*$匹配那些额外的制表符和空格,并允许我用空替换它们。 SSMS 2016 开始为查找/替换功能使用某种 .net 正则表达式语法。使用 \s+$几乎在 2016 年有效,但它删除了空行。

最佳答案

要使用 .NET 正则表达式从行尾删除尾随水平空白,您需要使用

(?m)[\p{Zs}\t]+$

多行修饰符 (?m)必须使 $ anchor 匹配行尾而不是整个字符串。 \p{Zs}匹配除制表符以外的任何 Unicode 水平空格,因此,我们需要添加 \t\p{Zs}进入字符类 [...] . +量词将匹配这些空格的 1 次或多次出现。

不依赖多行修饰符的替代方案:
[^\S\r\n]+(\r?\n|$)

并替换为 $1反向引用(重新插入模式中第一个(也是唯一一个)捕获组捕获的文本,即保留输出中的行尾)。

详情 :
  • [^\S\r\n]+ - 匹配 1 个或多个除非空格、CR 和 LF 之外的字符(基本上是 \s\r\n 除外)
  • (\r?\n|$) - 匹配行尾(可选 CR,回车,强制 LF,换行符)或字符串末尾( $ )。
  • 关于regex - 在 SSMS 2016 中使用正则表达式替换来修剪线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38899005/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com