使用行末的特定字符连接分割线

使用行末的特定字符连接分割线

我必须连接两行。其中一行将其末尾指向整个文本示例中的前一行:

line1:hello
line2:goodbye.

我需要将其更改为:

line1: hello goodbye.

我必须删除这个大文本的每第三行(3 的倍数,如 3、6、9、12、15、18、21、... 行)。

这就是我想要做的。

第一个任务:

  • 检查每一行

  • 如果以句号结尾,则.转到下一行,

  • 如果不是以句点结尾,.则将下一行连接到当前行。

每行没有行号标签,以普通单词开头。

第二项任务

  • 从一开始每三行都是垃圾,应该删除

  • 第一个任务也必须完成,因为在某些部分,第三句话被分成了两行,所以我必须先将分成两行的那一行完全连接起来,然后再执行第二个任务。

我使用 Windows 7。我可以使用 notepad++ 和 ultraedit

答案1

第一个任务我将在 Notepad++ 中使用正则表达式搜索和替换:

  • 打开“搜索”>“替换……”
  • 作为“查找内容:”,输入"([^\.])\r\n"(不带引号)
    • 正则表达式的含义:查找以不同于“。”结尾的行。
    • 注意:如果文档有 Linux 文件结尾,则必须使用“\n”而不是“\r\n”。
  • 作为“替换为:”,输入"\1 "(不带引号;确保也复制“\1”后的空格)
  • 作为“搜索模式”,选择“正则表达式”
  • 点击“全部替换”

输入:

hello
goodbye.
hello
hello
goodbye.
hello.
goodbye.

输出:

hello goodbye.
hello hello goodbye.
hello.
goodbye.

第二项任务可以用更长的正则表达式来完成:

  • 打开“搜索”>“替换……”
  • 作为“查找内容:”,输入"(([^\r\n]*\r\n){2})[^\r\n]*\r\n"(不带引号)
    • 正则表达式的含义:查找三行块。
    • 注意:同样,如果文档有 Linux 文件结尾,则必须使用“\n”而不是“\r\n”。
  • 作为“替换为:”,输入"\1"(不带引号)
  • 作为“搜索模式”,选择“正则表达式”
  • 点击“全部替换”

输入:

hello goodbye.
hello hello goodbye.
sdlfj sdgf.
hello.
goodbye.
(/%&/$&=)?)=´?&%.
goodbye goodbye.
bye.
sldfjsdökl.
hello.

输出:

hello goodbye.
hello hello goodbye.
hello.
goodbye.
goodbye goodbye.
bye.
hello.

笔记: 在这两个例子中,我都假设没有尾随空格。如果有,您需要先删除它,例如通过使用正则表达式替换(如上)"\s*$"""(不带引号)。

相关内容