在 Textpad 或 Notepad++ 中,是否有一個選項可以將正規表示式查找的所有匹配項匯出為單一清單?
在一個大文本文件中,我正在使用正則表達式搜尋標籤(用 % % 括起來的單字)%\< and \>%
,並希望所有匹配項作為單個列表,以便我可以使用 Excel 刪除重複項並獲取唯一標籤的列表。
答案1
您可以透過使用來實現這一點反向引用Notepad++ 中的尋找和標記功能。
使用正規表示式(例如 )查找匹配項
%(.*?)%
並將其替換為\n%\1%\n
,之後我們將在單獨的行中包含目標單字(即沒有一行將有多個匹配的單字)使用“搜尋”-->“尋找”-->“標記”功能用正規表示式標記每一行
%(.*?)%
,並記住勾選“書籤線' 在標記文字之前- 選擇搜尋-->書籤-->刪除未標記的行
- 儲存剩餘的文字。這是所需的清單。
答案2
正在做這個在Notepad++ 是強制性要求嗎?您使用的是 Windows 還是某種形式的 Unix?如果您使用的是 Windows,則可以(部分)從命令提示字元執行此操作:
findstr /r "%[az].*[az]% %[az]%"你的文件>新文件
findstr
隱約受到啟發grep
,所以這個新文件
將包含所有線符合您的搜尋條件;然後,您可以使用 Notepad++ 刪除不需要的文字(第一個 % 的左側和第二個 % 的右側)。
當然,如果您使用的是 Unix,則可以使用sed
.如果您有 GNU grep
(即,如果您使用的是 Linux),則可以使用grep -o
.
答案3
有一個 Notepad++ 插件,可以將匹配的正規表示式複製到新選項卡中的新檔案。 正規表示式擷取
因為我沒有找到任何 Notepad++ 插件可以從當前文件或某個位置的所有文件中提取一些文字並進行一些附加設定(例如大小寫轉換),所以我決定嘗試自己製作。 (...)插件介面非常簡單(...)。 (...)「尋找」、「取代」和「遮罩」欄位使用 C++11 正規表示式語法。從文件中提取目前僅適用於 UTF8 格式的文件。
編輯 依問題自訂的對話框輸入
在圖像中您可以看到如何填寫對話框。我假設一個單字不包含空格等,只包含\w匹配的字元。尤其:
- 使用一對括號,可以選擇不含百分比字元的單字。
- 選擇選項提取並替換,選擇第一個符合項目。否則,您將得到所有 $1、$2 等的柱狀輸出。
- 查看跳過 $& ...省略完整的匹配項。
- 查看過濾獨特每場比賽只報告一次。
- 點選提煉選擇獲取結果。 (搜尋只查找匹配項,但不報告)。
答案4
如果有人對線上解決方案感興趣(因為 notepad++ 外掛不適用於 64 位元),您可以嘗試莫爾生物工具它可以完全提取您的正規表示式,無需額外的行或使用它們。