![解釋](https://rvso.com/image/1417423/%E8%A7%A3%E9%87%8B.png)
我有一堵文字牆(沒有程式碼、數字或類似的東西)。有時,句子會在「中間」被「段落」或「手動換行符號」分割。
例如:
The most obvious part was a hollow, echoing quiet, made by things that
were lacking. If there had been a wind it would have sighed through the
trees, set the inn’s sign creaking on its hooks, and brushed the silence
down the road like trailing autumn leaves. If there had been a crowd,
even a handful of men inside the inn, they would have filled the silence
with conversation and laughter, the clatter and clamor one expects from
a drinking house during the dark hours of night. If there had been music
... but no, of course there was no music. In fact there were none of
these things, and so the silence remained.
我想創建一個正則表達式或擴展替換,可以將這些行縫合在一起。
我曾經在 microsoft word 中執行此操作,我在其中搜尋“換行符”,其中它前面有一個字母字元(而不是點 (.) 或感嘆號 (!)、問號 (?) 或引號標記(") 並將其替換為空白。
我不再使用 microsft word,雖然開放式辦公室可以做到這一點,但這是一個非常非常非常緩慢的過程。
有沒有辦法在記事本++中使用正規表示式或擴充替換來執行此操作?
答案1
使用正規表示式,您可以執行以下操作:
找什麼 :([^.!?"])\r\n
Replace : $1
(需要加入尾隨空格,但用 Markdown 渲染時不會顯示)
解釋
([^.!?"])
將把不是.
、!
、?
或 的任何字元分組"
。如果您確實希望它允許任何字母數字字符,您可以將其更改為([\w])
,它將匹配從A
到 的任何字符Z
,無論是大寫還是小寫、任何數字或下劃線 ( _
)。如果您確實只允許A
,Z
則可以使用([A-Za-z])
.
方括號本質上用於表示「允許/禁止以下字元」(透過^
在左方括號後面添加字元來指定禁止)。方括號還允許上述語法A-Z
,正如您所期望的,它允許兩個提供的值之間的任何值。
最後,透過在分組周圍使用括號(適用於上面提供的所有變體),可以使用佔位符將該值放回字串中$1
,這將在下面進一步討論。
\r\n
與 Notepad++ 中的換行符號相符(在其他編輯器中,換行符號可能是\n
或\r
)。
總之,正規表示式本身的兩個部分確保僅匹配您指定的字符,後跟換行符。
替換$1
語句(同樣,確保之後添加一個空格)將採用我們在正則表達式本身中匹配的內容(該行的最後一個字符,後跟換行符)並將其放回該行(這樣我們不會刪除該字符,否則如果沒有此聲明,就會發生這種情況)。空間的存在只是為了確保當線條拉在一起時,單字仍然清晰並且不會合併在一起。