Command Palette

Search for a command to run...

如何在沒有正規表示式的情況下尋找和替換文字

如何在沒有正規表示式的情況下尋找和替換文字

T
Toolz Team
|Sep 13, 2026|16 閱讀
在 Google 上首選 Toolz。dev

文字工具 系列的一部分

尋找並替換文字

在線查找和替換沒有正規表示式的文字。同時套用多個規則,匹配整個單字並控制大小寫。客戶端,無註冊。

使用尋找並替換文字

我跑 工具。dev 我這一周的大部分時間都在 WordPress 插件程式碼、Laravel API 和 React 前端度過。尋找並替換是我執行次數最多的單一編輯,但十分之九我不想要它的強大版本。我不想要正規表示式。我想拿一段文字,說每次出現客戶端'舊產品名稱,然後將其替換為新產品名稱,準確地說,我的搜尋字詞中沒有一個雜散字元與我從未打算接觸過的東西相符。就是這樣 尋找並替換工具 確實如此,本指南講述了為什麼您大多數時候想要的是查找和替換的字面、無聊版本。

TL;DR: 該工具確實可以在貼上文字區塊上進行文字查找和替換。搜尋字詞與鍵入的完全匹配,因此句號與句號匹配,美元符號與美元符號匹配,沒有轉義,也沒有意外的過度匹配。您可以新增多個查找和替換規則並一次套用它們,將匹配限制為整個單詞,並開啟或關閉大小寫靈敏度。它報告每個規則有多少個替換。所有內容都在您的瀏覽器中運行,因此您貼上的任何內容都不會上傳。當您真正需要通配符和捕獲群組時,正規表示式替換器是正確的工具。

什麼是字面上的尋找和替換,為什麼 " 字面意思和引用;物質?

尋找和替換是定位每個出現的字串並將其交換為另一個字串的操作。每個編輯器都有它。不同之處在於該工具如何解釋您的搜尋字詞,並且單一設計選擇決定該工具是否幫助您或悄悄破壞您的文字。

有兩所學校。正規表示式替換器將您的搜尋字詞視為一種模式,其中某些字元是命令:點表示 "任何字元和引用;星號表示 "重複,&引用;美元符號表示 "行尾,"括號、括號和反斜線都帶有特殊意義。文字替換器將您的搜尋字詞視為其本身,將字元視為字符,不附加任何特殊含義。

大多數時候,字面意思就是你想要的,具體原因如下。假設您想替換版本字串 1.0.0 與 2.0.0 在文字區塊中。在正規表示式工具中,這些點是通配符,因此您的搜尋也相符 1x0y0, 1a0b0,以及其他你從未想過的字串。你必須像這樣逃脫點 1\.0\.0 為了確保安全,如果您忘記了,該工具會做一些微妙的錯誤,並且不會警告您。在字面工具中, 1.0.0 手段 1.0.0()點就是點,沒有什麼好逃避的,也沒有什麼好犯錯的。對於這樣的價格也是如此 $9.99,帶有反斜線的檔案路徑,或帶有括號的程式碼片段。文字工具可以處理所有這些,而無需您考慮模式語法,因為沒有模式語法。

我什麼時候應該使用正規表示式替換器?

字面預設是正確的,但它並不是所有問題的正確答案,我寧願告訴你它停在哪裡,也不願假裝它沒有。伸手去拿 正規表示式替換工具 當您匹配的東西是形狀而不是固定字串時。如果您需要每四位數年份匹配一次,或者每個電子郵件地址,或者以哈希開頭的每一行,或者您想通過用捕獲組從中拉出片段來重新格式化匹配的文本,則表示模式工作和文字工具無法做到這一點。這 正規表示式測試儀 是在運行該模式之前建立和調試該模式的地方。

分界線很簡單。如果您可以準確地輸入您要尋找的內容,請使用文字尋找和替換並保存轉義。如果您正在尋找的是共享形狀但不精確字元的事物類別,請使用正規表示式。大多數日常文字清理都是第一類,這就是為什麼文字工具涵蓋了大部分實際工作,而正規表示式工具涵蓋了其餘工作。

情況 使用 為什麼
重新命名固定單字或片語 字面查找和替換 這個術語是準確的;不需要模式
包含點、斜線或的搜尋字詞 $ 字面查找和替換 沒有逃跑,沒有意外的外卡比賽
一次修復幾個不同的術語 字面查找和替換,多個規則 每個規則都是精確的並按順序應用
匹配任何年份、電子郵件或代碼形狀 正規表示式替換 只有模式才能描述類別
重新排序或重新格式化匹配的文字 正規表示式替換 捕獲組拉出並重新排列棋子
按規則在行開頭或單字邊界處進行匹配 正規表示式替換 錨點和邊界是圖案特徵

多個規則如何運作?

我最依賴的功能是同時應用多個規則。真正的清理很少是一次交換。當我接管客戶端' s 複製時,我可能需要更改品牌名稱,修復兩個一致的拼寫錯誤,並刪除一段樣板,所有這些都在同一文字區塊中。這樣做是四次單獨的傳遞,既乏味又容易出錯。該工具可讓您為每個查找和替換對添加一行,並且它會按順序應用它們,每個規則都作用於其前一個規則的輸出。

這種排序值得理解,因為它是一個功能,而不是意外。說規則一替換 foo 與 bar,規則二替換 bar 與 baz。 因為規則二是根據規則一的結果運行的,文本開頭為 foo 最終作為 baz. 大多數時候,你的規則是獨立的,順序並不重要,但當它們確實相互作用時,行為是可預測的:從上到下,每個規則都在前一個結果上。該工具還向您顯示每個規則的計數,因此您可以確認規則三與某些內容匹配,並且不會因為搜尋字詞中的拼字錯誤而坐在那裡無所事事。

全詞和格選項有什麼作用?

有兩個選項可以處理普通交換過於生硬的情況。

案例敏感性決定是否 Cat, CAT, 和 cat 是同一個字還是三個不同的字。預設情況下它是關閉的,因為大多數清理工作都希望捕獲一個術語,無論它是如何大寫的。當大寫是重點時打開它:當您想要更改名稱的一種拼寫而不觸及另一種拼寫時,或者當您使用代碼時 value 和 Value 是不同的標識符。

全詞匹配決定您的搜尋字詞是否必須獨立存在,而不是放在較長的單字中。這個選項可以讓您免於經典的尋找和替換災難。如果你替換 cat 與 dog 如果沒有全字匹配,你也可以轉動 category 進入 dogegory 和 scatter 進入 sdogter. 全詞匹配時,僅使用獨立詞 cat 被替換,較長的單字被保留。該工具使用 Unicode 字母和數字而不是僅 ASCII 定義來檢測單字邊界,因此重音單字類似 café 被視為一個單詞,並且正確地找到了它的邊界,這是使用經典的樸素實現 \b 邊界會出錯。

這裡有一個更廣泛的觀點,關於文字工具如何必須尊重 Unicode,我在其中討論了這一點 文字工具指南:將文字視為位元組而不是使用者感知的字元是工具錯誤數量驚人的來源。

我如何在實際工作中使用它

一些模式一次又一次地出現。當我從 PDF 或電子郵件中貼上文字時,它通常會出現一個寫得不一致的術語,並且一個文字規則會修復每個實例。當我遷移客戶端's 內容時,我為品牌名稱、舊網域和幾個重複出現的短語設定了一堆規則,然後一次運行它們。當我在匯入資料之前清理資料時,我使用規則刪除重複的前綴或雜散標記字符,將其替換為空替換的規則。

它自然地與其他文字工具配對。我經常用平貼的文字 刪除換行符 首先,然後運行尋找並替換結果。當工作實際上是改變單字的形狀而不是交換它們時, 案例轉換器 是更好的擬合,當我去複製清單時,我會達到 重複的線路刪除器 相反。知道哪種工具適合哪種工作,速度是一半,並且有更廣泛的概述 開發人員生產力工具 指南。

最後一件事,也是我建立這些在瀏覽器中運行的原因,是隱私。您貼上到尋找和替換工具中的文字通常是草稿、客戶端'未發布的副本、文字記錄或您無權上傳到隨機伺服器的資料。該工具所做的一切都發生在您自己的電腦上的 JavaScript 中。沒有任何內容被傳輸、記錄或存儲,您可以透過斷開網路連接並觀看工具繼續工作來確認它。

一個可行的例子:跨頁面重新命名產品

讓我具體闡述多規則的想法,因為這是人們未充分利用的部分。假設客戶重新命名為 "QuickBooks Lite"到 "分類帳,"搬離 oldsite.com 到 ledgerly.app,他們的舊副本保留了拼寫和引用;電子郵件和引用;帶有連字符,而新樣式指南想要 "email。"這是三個獨立的更改,我會將它們設置為一次通過三個規則,而不是三次通過該工具。

規則一發現 QuickBooks Lite 並替換為 Ledgerly. 規則二發現 oldsite.com 並替換為 ledgerly.app;請注意,這兩個域中的點在這裡都是字面意思,所以我不必逃避任何事情,而正規表示式工具會處理 oldsite.com 作為匹配 oldsiteXcom 以及。規則三發現 e-mail 並替換為 email. 我貼上頁面,運行所有三個,每個規則旁邊的計數告訴我品牌名稱更改了九次,網域更改了四次,連字符修復命中了兩次。如果規則三顯示為零,我會知道副本不包含連字符拼寫,我可以刪除該規則。

計數是這個工作流程中安靜的英雄。沒有它們,您就會相信每個規則都完成了它的工作;有它們,您會立即收到搜尋字詞是對還是錯的回饋。您期望匹配的零幾乎總是查找欄位中的拼字錯誤,或者您可以透過切換大小寫敏感度來解決大寫不匹配。

匹配如何運作?

值得了解一些幕後發生的事情,因為它解釋了您可能會感到驚訝的一些行為。該工具從左到右掃描文字。在每個位置,它都會檢查您的搜尋字詞是否從那裡開始匹配。如果滿足,並且滿足任何全字條件,它會寫入替換並跳過匹配的文字。如果不滿足,它會複製一個字元並繼續移動一個字元。這就是為什麼替換在單一規則中不是遞歸的原因:當它寫入替換時,它會繼續掃描它之後,而不是在它內部,因此替換 aa 與 a 在字串中 aaa 給你 aa 而不是一路倒下 a. 如果您想要崩潰,請執行該規則兩次,這正是具有相同查找和替換的第二個規則所做的。

不區分大小寫的匹配是逐個字元完成的,而不是先對整個字串進行小寫。這聽起來像是實現細節,但對於正確性很重要:某些字元在小寫時會改變長度,比較整個小寫字串會使位置失去對齊並損壞輸出。一次比較一個字元可以保持每個索引誠實。在匹配之前和之後根據字元檢查全詞邊界,將任何 Unicode 字母或數字視為單字的一部分,這使得重音和非拉丁腳本的行為符合您的預期。

這些都不是你在日常使用中必須考慮的事情。但這就是在邊緣盒上悄悄做錯事的工具與您可以信任客戶的工具之間的區別'複製,這就是為什麼我寧願使用專門構建的文字替換器,也不願將文字貼到正規表示式框中,並希望我的搜尋字詞不包含特殊字元。

常見問題

如何在不使用正規表示式的情況下找到並替換文字?

將文字貼到工具中,輸入要查找的確切短語和要替換它的確切短語,然後運行它。搜尋是字面意思,因此您輸入的每個字元都與其自身匹配,無需轉義任何內容。每次發生都會被交換,您會得到有多少更改的計數,所有這些更改都在您的瀏覽器中進行,而無需上傳任何內容。

我可以同時替換幾個不同的單字嗎?

是的。為每個查找和替換對添加一行,工具按順序應用它們,每個行都作用於其前面的規則的結果。這就是您重新命名品牌、修復兩個拼字錯誤以及一次刪除一塊樣板的方法,每個規則都會顯示自己的替換計數,以便您可以看到它是否匹配。

這與正規表示式替換工具有什麼不同?

該工具從字面上匹配您的搜尋字詞,因此點僅匹配一個點,美元符號僅匹配一個美元符號,無需學習模式語法,也不會意外過度匹配。正規表示式替換工具將搜尋字詞視為具有通配符、錨點和捕獲組的模式,這是匹配某類事物(例如任何年份或任何電子郵件地址)所需的模式。當您可以輸入您想要的確切內容時,請使用文字;當您匹配形狀時使用正規表示式。

全詞匹配如何阻止不必要的替換?

隨著全詞匹配,搜尋字詞僅在獨立存在時才會替換,而不是在較長的單字內。替換 cat 然後改變 cat 但離開了 category, scatter, 和 located 未受影響。該工具使用 Unicode 感知邊界,因此重音單字和非英語單字的處理正確,而不是在錯誤的位置分開。

會找到並替換更改我的換行符或間距嗎?

不。只有您搜尋的字元會更改。火柴周圍的換行符、縮排、間距和標點符號保持原樣。如果替換內容比原始內容長或短,則周圍的文字會自然移動,但不會重新格式化或重新流淌。

我可以處理的文字數量有限制嗎?

除了您的瀏覽器之外沒有固定的限制'記憶體。因為工作發生在您的裝置而不是伺服器上,因此數十萬個字元的區塊幾乎可以立即處理,並且沒有上傳大小上限。對於整本書大小的內容,您可能會注意到短暫的暫停,但普通文件實際上是即時的。

我的文字是否上傳或儲存在任何地方?

不。文字在瀏覽器中由 JavaScript 處理,永遠不會傳輸、記錄或儲存。您可以在執行替換時開啟網路選項卡或與網路斷開連接來驗證這一點,因為一旦頁面載入,工具就會保持離線工作。這就是使用客戶端工具進行草稿、客戶端副本和任何私人內容的原因。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!