gpt4 book ai didi

正则表达式在行首用制表符替换空格

转载 作者:行者123 更新时间:2023-12-01 02:44:03 24 4
gpt4 key购买 nike

我希望能够修复文本文件的制表符/空格缩进。

目前,由于某种原因,每行在随机位置都有空格。

例如:
space tab if -> tab ifspace tab space tab if -> tab tab iftab tab space if -> tab tab if
等等。

它不应该影响第一个单词之后的任何内容,因此只会影响缩进:所以 tab space if space boolean应改为 tab if space boolean不是 tab if tab boolean .

regex 命令应该保留正确数量的制表符并删除空格。如果一行中有 4 个空格,则应将其转换为制表符。

感谢您的帮助。如果您还可以解释您的正则表达式是如何工作的,那将非常感谢,因为我正在尝试学习如何做我自己的正则表达式,而不是总是要求其他人这样做。

如果您需要更多信息或详细信息,请询问我会尽快回复。

我可以一次完成一个案例,如下所示:

先找空格:查找:space*if替换:if这仅适用于没有制表符的行以及第一个单词的位置,如果是这样的话,我会为该行的起始单词执行此操作。

然后我会重复 space*\tif .

看起来我可以通过做 (?:[A-Za-z]) 来匹配一个单词而不需要捕获所以我可以换掉 if为此,它会更好地工作。

最佳答案

您可能可以一步完成此操作,但我更偏向于简单的方法。

首先将 4 个空格转换为制表符。第一行是匹配,第二行是替换。

^(\s*)[ ]{4}(\s*)
$1\t$2

然后用空替换所有剩余的单个空格。
^(\t*)[ ]+
$1

在这种情况下您不需要方括号,但即使使用 SO 的代码格式,也很难确保有空格。

第一行搜索行首 ^ ,然后找到任意数量的空格(包括制表符)并将它们放入一个稍后命名为 $1 的匹配组中与 (\s*) .中间正好找到四个空格 [ ]{4} .最后一部分重复匹配组,以防该侧也有制表符或更多空格。

由于第二个匹配项应该找到所有剩余的空格,因此第二个匹配项只查找 0 个或多个选项卡,将它们放入一个捕获组,然后找到剩余的所有空格。由于它会在进行过程中查找和替换,因此它会吞噬所有空格并替换为制表符。

关于正则表达式在行首用制表符替换空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33027879/

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