我必须连接两行。其中一行将其末尾指向整个文本示例中的前一行:
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*$"
为""
(不带引号)。