2010-02-19 172 views
39

我有一個HTML源文件的一部分,它包含我想使用記事本++的正則表達式功能一次選擇和複製的字符串。如何複製記事本++中的標記文本

這裏是文本源的一部分:

<option value="Performance" 
>Performance</option> 
<option value="Maintenance" 
>Maintenance</option> 
<option value="System Stability" 
>System Stability</option> 

我使用正則表達式"[0-9a-zA-Z ]*"搜索「價值」的價值觀。我還選擇了記事本++搜索中的功能來突出顯示/標記找到的文本。這工作正常,我現在想複製或只剪切突出顯示的文本到剪貼板進行進一步處理。但是我無法在Notepad ++中找到這個功能。這是根本不可能的還是我太愚蠢?

+0

我不熟悉的記事本+ +,但不按Ctrl-C的工作(因爲它在其他地方在Windows中),或者你在找一個腳本這樣做的方式,還是什麼? – 2010-02-19 19:25:21

+0

Ctrl-C不會複製字符串。它看起來像Notepad ++有不同的方式來標記和突出顯示緩衝區中的文本。正則表達式匹配的文本以某種顏色突出顯示,例如用鼠標標記的文本以灰色突出顯示。這個文本可以用Ctrl-C複製。但是你不能一次標記文本的不同部分。 – Alex 2010-02-19 19:32:23

+0

[Ankit的回答](http://superuser.com/questions/477628/export-all-regular-expression-matches-in-textpad-or-notepad-as-a-list)超級用戶是一種方法它只使用Notepad ++ – Fidel 2016-10-20 18:08:28

回答

18

試試這個:

首先,解決行結束的問題: (記事本++不允許多行正則表達式)

搜索(擴展模式):\r\n>(還是自己系統的行尾)

替換:>

然後

搜索[正則表達式模式]:<option[^>]+value="([^"]+)"[^>]*>.*

(如果你想的value所有出現的,而不是僅僅的選項,簡單的刪除前導option

替換:\1

第二個正則表達式的說明:

<option[^>]+  Find a < followed by "option" followed by 
       at least one character which is not a > 

value="   Find the string value=" 

([^"]+)   Find one or more characters which are not a " and save them 
       to group \1 

"[^>]*>.*  Find a " followed by zero or more non-'>' characters 
       followed by a > followed by zero or more characters. 

是的,它用正則表達式解析HTML - these warnings apply - 仔細檢查輸出。

+0

+1正準備發佈類似於此的內容。好答案。 – Beanish 2010-02-19 19:44:47

+0

非常感謝你! – 2010-02-19 19:46:08

+0

這可能是正確的方向。但group \ 1只包含第一個值,這裏是「Performance」。其餘不存儲在組中。 – Alex 2010-02-19 20:03:39

1

不,從記事本++ 5.6.2開始,這似乎不可能。雖然列選擇(Alt +選擇)是可能的,但顯然沒有實現多個選擇,因此搜索功能也不支持。

+0

奇怪的是,5.6.6確實允許突出顯示某些顏色中的匹配文本部分,但它只允許將它們放到剪貼板。 – Alex 2010-02-19 19:41:43

78

從記事本++ 5.9開始,他們添加了一項功能以'刪除未標記的行',可用於刪除您不想要的所有內容,並替換每個值行上的其他文本。

  1. 使用搜索 - >查找 - >標記功能,以紀念你想保留/複製和記
  2. 選擇搜索之前標記文本打勾「書籤行」的每一行 - > Bookmark- - >刪除未標記的行
  3. 使用搜索 - >查找 - >替換替換您不想保留/複製的其他文本
  4. 保存剩餘文本或複製它。

您還可以使用搜索做類似的事情 - >書籤 - >複製收藏行

因此從技術上講,你還是不能複製文字標註,但你可以書籤線,標記文本,然後執行各種有書籤或無標記行的操作。

+0

優秀的提示,正是我需要的,謝謝! – montrealist 2012-02-15 20:32:16

+0

+1 - 對於特定條目的(大型)日誌文件進行拖拽時,非常方便。 – CraigTP 2012-07-30 12:17:19

+0

它的工作原理。謝謝。 – 2014-04-25 06:29:25

19

由於此帖子在Google搜索結果中名列前茅,因此我將此內容全面添加。

您實際上可以從一個正則表達式搜索中複製所有內容,而不是一步到位。

  1. 使用搜索下的標記並在查找內容中輸入正則表達式。
  2. 選擇書籤行,然後單擊標記全部。
  3. 點擊搜索 - >書籤 - >複製書籤行。
  4. 粘貼到新文檔中。
  5. 您可能需要使用搜索和替換來刪除不屬於正則表達式部分的行中的一些不需要的文本。
+1

此列表中的第5個字段對我來說是耗時的部分。由於複製標記的文本顯然不被NotePad ++支持,所以我使用了另一個免費軟件:Ultrapico的Expresso。 我將整個文本粘貼到Expresso的「示例文本」面板中,並將我在Notepad ++中準備的相同正則表達式搜索粘貼到「正則表達式」窗格中。然後我按下了「運行匹配」,右鍵單擊「搜索結果窗格」/「將匹配的文本複製到剪貼板」。 – 2015-11-19 10:40:01

0

我有同樣的問題。您可以在新選項卡中列出正則表達式匹配,PSPad編輯器中每行匹配新行,這與Notepad ++非常相似。

按Ctrl + F搜索,檢查正則表達式opion,放入正則表達式並單擊列表。

5

這將是一個很棒的功能在Notepad ++中。我用以下方法來提取所有的比賽出來的文件:

powershell 
select-string -Path input.txt -Pattern "[0-9a-zA-Z ]*" -AllMatches | % { $_.Matches } | select-object Value > output.txt 

如果你想只在排序列表中不同的比賽:

powershell 
select-string -Path input.txt -Pattern "[0-9a-zA-Z ]" -AllMatches | % { $_.Matches } | select-object Value -unique | sort-object Value > output.txt 
+1

完全廢話,你的救命啊 – dbinott 2017-01-27 22:10:59

+1

太棒了!比Notepad ++解決方案好得多。 – blindstuff 2017-02-23 18:52:31

0

這是不可能的記事本,但下面是簡單的解決方案

您將需要免費快報V3.1 http://www.ultrapico.com/ExpressoDownload.htm

我訴諸另一個免費軟件:Expresso by Ultrapico。

  1. 安裝完成後進入「測試模式」選項卡。
  2. 將您的REGEX複製到「正則表達式」窗格中。
  3. 粘貼您的整個文本將要搜索快報「樣本文本」窗格中,

  4. 按下「運行匹配」按鈕。右鍵單擊「搜索結果窗格」和「導出到...」或「將匹配的文本複製到剪貼板」。

N.B:原作者是@Andreas楊松但它隱藏在一個評論,所以由於此頁在谷歌搜索排名高我離開這裏的人。

0

這與https://superuser.com/questions/477628/export-all-regular-expression-matches-in-textpad-or-notepad-as-a-list相似。

我希望你試圖提取:
「性能」
「維護」
「系統穩定性」

這裏是這樣的 - 步驟1/3:打開搜索 - > Find->替換選項卡,選擇正則表達式單選按鈕。輸入查找內容:(\「[a-zA-Z0-9 \ s] + \」) 並用替換爲:\ n \ 1並單擊替換所有按鈕。 Before Clicking Replace All

步驟2/3:在第一步驟中的關鍵字將在接下來的幾行(如圖下一圖像)。現在轉到標記選項卡,並在查找內容:字段中輸入相同的正則表達式。 將書籤放在書籤行上。然後點擊全部標記。 Bookmark the lines

第3/3步:轉到搜索 - >書籤 - >刪除未標記的行。 Remove Unmarked lines

所以,你有最終結果如下Final Result

相關問題