我有一些格式如下的文字:
line01
line01.01
line01.02
line01.02.01
line01.02.01
但我需要它像
(line01(line01.01)(line01.02(line01.02.01)(line01.02.01)))
有没有办法使用文本编辑器以这种方式将缩进更改为括号?
答案 0 :(得分:1)
您可以使用Notepad ++正则表达式查找和替换功能,只需几个独特的替换即可完成此任务。在"替换"对话,确保将搜索模式设置为"正则表达式"并取消勾选"旁边的框。匹配换行符"
首先将每个缩进减少到一个空格。在您给出的示例中,一个缩进等于三个空格,因此您将首先搜索三个空格的所有实例并将其替换为单个空格:
查找内容: (三个空格字符)
替换为: (单个空格字符)(使用"全部替换"按钮一次)
接下来,查找所有没有子项目的行并在其周围添加括号:
查找内容: (^\s*+)(.*?)((?=($(?!\r\n)|\r\n)(?!\1 )))
替换为: $1\($2\)
(使用"全部替换"按钮一次)
接下来,找到所有包含子项目的行,并在一组括号中包围该行及其整个子项:
查找内容: (^\s*+)(([^(].*?)(\r\n\1\s+.*)+)
替换为: $1\($2\)
(使用"全部替换"按钮,直到它找不到更多匹配项)
最后,最后一步是删除括号之间的所有空格,以便最终输出看起来像示例输出:
查找内容: ([()])\s+([()])
替换为: $1$2
(使用"全部替换"按钮,直到它找不到更多匹配项)
示例输入:
line01
line01.01
line01.02
line01.03
line01.04
line01.04.01
line01.04.02
line01.04.03
line01.04.04
line01.05
line01.06
line01.06.01
line01.06.02
line02
line02.01
line02.01.01
line03
line04
line05
line06
line06.01
line06.01.01
line06.01.01.01
line06.01.01.02
输出(删除所有空格之前):
(line01
(line01.01)
(line01.02)
(line01.03)
(line01.04
(line01.04.01)
(line01.04.02)
(line01.04.03)
(line01.04.04))
(line01.05)
(line01.06
(line01.06.01)
(line01.06.02)))
(line02
(line02.01
(line02.01.01)))
(line03)
(line04)
(line05)
(line06
(line06.01
(line06.01.01
(line06.01.01.01)
(line06.01.01.02))))
输出(删除所有空格后):
(line01(line01.01)(line01.02)(line01.03)(line01.04(line01.04.01)(line01.04.02)(line01.04.03)(line01.04.04))(line01.05)(line01.06(line01.06.01)(line01.06.02)))(line02(line02.01(line02.01.01)))(line03)(line04)(line05)(line06(line06.01(line06.01.01(line06.01.01.01)(line06.01.01.02))))