2017-06-13 353 views
2

我正在嘗試使用正則表達式在OpenOffice文檔中查找和刪除任何空白或空白行。使用正則表達式刪除任何空白或空格的行

目前我能做到這一點在兩個步驟:

  1. 搜索^$和什麼也沒有更換。

    這將刪除所有空行。

  2. 搜索^\s*$並將其替換爲無。

    這將刪除任何只包含空格或製表符的行。

    重要注意事項:從我的角度來看,這第二個版本也應該刪除所有空行(作爲第一版本),但實際上並沒有。

所以,實際上有兩個問題。

  • 爲什麼第二個正則表達式僅匹配空格和製表符的行,但不匹配空行?

  • 是否有辦法將第一個和第二個版本結合在一起以實現預期結果?這裏我嘗試過:^$|^\s*$(^|^\s*)$。但它不起作用。它僅匹配空白行,但不匹配空白行。

文字測試:

Just for example, I changed spaces to dots 
and tabs to dashes. 


aa 

.......................... 

------------------- 

aaaaaaaaaaaaaa 

aaaaaaaaaaaaaaaaaaa 

期望的結果:

aa 
aaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaa 
+0

根據https://help.libreoffice.org/Common/List_of_Regular_Expressions,'|'是用於查找多個術語。 '^ $'是一個表達式而不是一個術語,所以這可能是它不起作用的原因。 –

回答

1

AltSearch可以做到這一點是使用批處理腳本足下。在AltSearch對話框中,點擊Batch >>。然後Edit該文件並在結尾粘貼以下代碼。

[Name] Remove any blank or whitespaced lines 

    ; Remove any lines which contains only spaces or tabs. 
    [Find]^\s*$ 
    [Replace] 
    [Parameters] MsgOff Regular 
    [Command] ReplaceAll 

    ; Remove any empty lines. 
    [Find]^$ 
    [Replace] 
    [Parameters] MsgOff Regular 
    [Command] ReplaceAll 

[End] 

現在,保存文本文件並點擊Refresh。最後,點擊Remove any blank or whitespaced lines並按Execute

這產生所期望的結果並且示出了一個單一的對話框:

Batch 'Remove any blank or whitespaced lines' is ended. 

10 replacements have been done.