我正在使用Regex和TextPad来清理和准备SQL脚本。我想用逗号替换或添加逗号:
- 每行末尾有1个或多个空格
- 在每行或最后一行的末尾(即,“文件结束”)
在花了几个小时的研究和迭代后,我得出了以下结果,接近我想要的结果,但并不完美。我如何编辑它以获得下面所需的结果?
查找内容:' +$|(\n)|$(?![\r\n])'
替换为:'\1\2,'
我有数据显示
dog *(2 spaces)*
cat *(4 spaces)*
bird*(no space)*
rodent *(1 space)*
fish*(no space)*
我希望结果是
dog,
cat,
bird,
rodent,
fish,
我的结果是
dog,
cat,
bird
, rodent,
fish,
2条答案
按热度按时间nbysray51#
我觉得你把事情搞复杂了。只要匹配行末尾的任意数量的空格,并替换为逗号。
查找:
\s*$
替换为:,
1dkrff032#
在 textpad 或 notepad++
\s*$
中可以工作,但值得一提的是,如果在另一个环境中使用它,它可能会导致undesired matches (regex101),并在行尾有空格时添加额外的逗号。原因是,例如在cat
中,它将匹配cat
之后的空格(* 第一个匹配 )加上行尾的零长度匹配( 第二个匹配 *)。\s*$
的另一个潜在问题可以在这里阅读:The RegEx that killed StackOverflow (blog)如果文本中有很多空格,则会导致大量的回溯(regex101 demo)。这个演示输入需要大约7k的步骤,只是为了在最后删除一些空格。减少步骤的解决方法是 * 消耗 * 和capture直到最后一个非空白(如果有)。
Replace with
$1,
(regex101 demo)第一个组捕获的内容,设置为optional,甚至只匹配空白。这将使它下降到100多步。