所謂線上批次查找與取代,是指在大量貼上的文字中,將目標字串的每個逐字匹配全部轉換——無需上傳、無需外掛,也不會出現正則表達式的意外行為。「Find and Replace Text」工具可接受最多 1,000,000 字元的來源文字,讓你在區分大小寫與不區分大小寫的比較之間選擇,並在顯示轉換後字串預覽的同時,回報實際的取代次數。由於查找值與取代值皆被視為逐字內容而非樣式,因此句號、星號、方括號、圓括號、美元號、反斜線等標點,都會以你輸入的樣子精確匹配。這種可預測性,正是在設定檔片段、日誌行、重複的散文段落、貼上的程式碼上進行批次編輯時能確保安全的原因——否則一個不小心寫錯的正則反向引用或樣式標記,可能會悄悄破壞輸出結果。所有匹配、取代、計數與預覽產生都在瀏覽器本機完成,因此來源文字不會被任何伺服器傳送、儲存或分析。更動任何控制項都會清除舊的結果,避免過時的輸出與目前設定混淆,而空白的查找值會被拒絕,因為在每個邊界匹配空字串本身就有歧義。

find and replace online bulk
無需上傳文字的線上批次查找與取代

線上批次查找與取代究竟在做什麼

逐字的批次查找與取代,會從頭到尾走訪一次貼上的文字,從目前的位移找出查找值的每個不重疊出現位置,將其周圍未動到的字元複製到輸出中,附加取代文字,再以整個查找長度向前推進,確保已重寫的部分不會再被搜尋。經過單一次正向掃描後,工具會回報完成了幾次取代,並預覽轉換後的確切字串,這讓這項操作在不必重新執行或心算緩衝區的情況下即可被審核。

這種單次掃描的行為,正是逐字批次編輯與基於樣式的「find and replace all online」工作流程之間的差異。樣式引擎可能會套用大小寫摺疊、腔調摺疊、Unicode 正規化、模糊匹配或全字偵測,而取代樣板則可能重新解讀美元號與反斜線。逐字工具刻意跳過整個那一層。查找值匹配自身、取代內容插入自身,計數僅依據已完成的逐字匹配。

如何執行線上批次查找與取代

在瀏覽器中開啟 Find and Replace Text 工具,並依照每次執行皆相同的三步驟工作流程操作。

  1. 將來源文字貼上或輸入到輸入區。最多接受 1,000,000 字元;更大的貼上會被拒絕,以維持瀏覽器的反應速度。
  2. 輸入逐字的查找值與逐字的取代值,接著選擇區分大小寫或不區分大小寫的比較,以及只取代第一個匹配或每個不重疊匹配。
  3. 執行取代。讀取回報的次數,然後在將結果複製到目標應用程式之前,逐行核對預覽內容。

如果你不確定該選哪一種大小寫模式,可以先從區分大小寫開始,讓大小寫以逐字方式處理。只有當你確實希望把 "Color" 和 "color" 視為同一個目標時,才切換到不區分大小寫。

為什麼純逐字匹配有助於批次編輯

當同一個字串在貼上的日誌或設定檔片段中出現數十次甚至數百次時,一次意外樣式解讀的成本會乘以取代的次數。查找值中的美元號若被當成反向引用錨點,或句號被悄悄視為「任意字元」,就可能把每一行中錯誤的字詞改掉。維持操作為逐字即可消除這項風險:查找字串匹配自身、取代內容插入自身,剩下唯一的自由度就只有大小寫敏感度,以及選擇只取代第一個匹配或每個匹配。

這種可預測性也讓這項操作易於推理。你不必在心裡為每個標點字元加上跳脫、不必檢查引擎是否支援 Unicode 屬性,也不必擔心計數是否包含重疊的命中。工具僅回報已完成的逐字匹配;空白查找值會被拒絕,因為在每個邊界匹配空字串本身具有歧義;而空白的取代值則被允許,並作為逐字刪除來運作。

單次掃描可完成的常見批次工作

同一套三步驟工作流程,涵蓋了對大型貼上內容的大部分實用批次編輯。下表列出典型的使用情境、逐字查找值,以及能產生乾淨結果且無需任何樣式語法的逐字取代。

批次工作逐字查找值逐字取代為何純逐字就已足夠
重新命名已複製設定中的標記old_token_namenew_token_name無需萬用字元或交替;標記本身是固定字串。
移除重複的分隔符號|(空白)空白的取代即作為逐字刪除。
更新重複的散文片語lorem ipsum dolorplaceholder text空白屬於逐字匹配的一部分,無需跳脫。
變更日誌行中的標籤包裝[INFO][LOG]方括號為逐字,並非字元類別。
從多行中去除註解標記# TODO:(空白)井號、空格與冒號皆會被精確匹配。

請注意上表中的查找值含有在正則表達式引擎中本會具有特殊意義的字元——管線符號、方括號、井號、冒號。在純逐字的批次工具中,這些字元匹配自身,而這正符合你想在貼上的檔案中移除或改寫某個精確標記時的需求。

Replace All 如何計數,以及為什麼零是有效的結果

取代次數係以已完成的逐字匹配為基礎。零是有效的結果,會原封不動地回傳原始文字;這在你想確認某個標記實際出現幾次、尚未決定是否改寫之前,作為乾跑(dry run)十分好用。Replace all 使用不重疊的匹配,因此工具絕不會在剛插入的文字上又重複掃描。

為了讓這點更具體,假設一段四字元的來源為 "aaaa",查找值為 "aa",取代為 "X"。第一個匹配會消耗位置零與一,下一個匹配消耗位置二與三,最後產生兩字元的字串 "XX"。不重疊的規則讓計數可預測,也讓預覽忠實對應來源。如果你需要在改寫之前取得原始的匹配位置,請先執行 Count Occurrences;該工具會回報精確的零基位移,這在單一遞增位移的掃描中、於文字被改寫後便無法保留。

限制、空白字元,以及工具不會更動的部分

一百萬字元的輸入上限,是為了讓瀏覽器處理與結果產生保持順暢。當查找值比剩餘文字還長時,會回傳零次取代——這與你用肉眼檢查得到的結果一致。來源的空白、Tab 與換行,除非本身屬於精確匹配的一部分,否則都會原樣保留;工具不會修剪、重排、正規化換行、排序行,或對輸入文字框進行其他形式的變動。

輸出預覽會保留空白字元,同時允許過長的行進行視覺上的換行。視覺上的換行不會在底層結果中產生換行字元,因此複製出來的文字會與預覽完全一致。不區分大小寫的模式在匹配時使用英文 locale 的小寫複本,但會從原始文字中擷取並保留未匹配的字元,這表示它不會執行腔調摺疊、Unicode 正規化、模糊匹配、詞幹化、locale 特定的 collation,或全字偵測。因此,不區分大小寫的取代提供的是實用的英文行為,而非通用的語言等價系統。

批次編輯之後:檢視與後續作業

一旦預覽符合你的預期,就透過瀏覽器將其複製到目標應用程式。未更動的來源仍保留在上方,可供再次執行;更動任何控制項都會清除舊的結果,避免過時的輸出與目前設定混淆。產生的預覽本身並沒有復原堆疊,但由於每次取代都是確定性的,且工具完全在離線狀態下運作,因此相同的輸入字串與選項在第二次執行時必定會產生相同的輸出。

若要對改寫後的文字進行後續的逐行處理,可將批次編輯與專用的單一目的工具搭配使用:使用 Add Prefix and Suffix 插入逐字的行首與行尾詞綴,使用 Line Break Converter 在實際換行與跳脫換行之間轉換,或在改寫後需要確認新標記數量時使用 Count Occurrences。若想深入了解當同一個標記以重複形式出現時,純逐字批次編輯的行為為何,請參閱 Bulk Text Replace: Replace Every Literal Match Locally。