我必須連接兩條線。其中一個的結尾指向整個文本範例中的前一個:
line1:hello
line2:goodbye.
我需要將其更改為:
line1: hello goodbye.
我必須刪除這個巨大文字的每第三行(3 的倍數,如 3,6,9,12,15,18,21,... 行)。
這就是我想做的事。
第一個任務:
檢查每一行
如果以句點結尾,則
.
轉到下一行,如果它不以句點結尾,
.
則將下一行連接到目前行。
每行沒有行號標籤,它們以普通單字開頭。
第二個任務
從一開始,每第三行都是垃圾,應該刪除
第一個任務也必須完成,因為在某些部分第三句話被分成兩行,所以首先我必須完全加入分成兩行的行,然後我執行第二個任務。
我使用Windows 7。
答案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*$"
(""
不含引號)。