web-dev-qa-db-ja.com

notepad ++でマークされたテキストをコピーする方法

Notepad ++の正規表現機能を使用して、一度に選択してコピーする文字列を含むHTMLソースファイルの一部があります。

テキストソースの一部を次に示します。

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

正規表現を使用しています"[0-9a-zA-Z ]*"「値」の値を検索します。また、Notepad ++検索の機能を選択して、見つかったテキストを強調表示/マークしました。これで問題なく動作するので、強調表示されたテキストのみをクリップボードにコピーまたはカットして、さらに処理します。しかし、Notepad ++ではこの機能を見つけることができません。これは単に不可能なのですか、それとも私も愚かですか?

52
Alex

代わりにこれを試してください:

最初に、行末の問題を修正します(Notepad ++は複数行の正規表現を許可しません)

検索[拡張モード]:_\r\n>_(または独自のシステムの行末)

置換:_>_

それから

[正規表現モード]を検索:<option[^>]+value="([^"]+)"[^>]*>.*

(オプションだけでなくvalueのすべての出現が必要な場合は、先頭のoptionを削除するだけです)

置換:_\1_

2番目の正規表現の説明:

_<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を正規表現で解析しています- これらの警告 apply-出力を注意深く確認してください。

19
Sean Vieira

Notepad ++ 5.9の時点で、「マークされていない行を削除する」機能が追加されました。この機能を使用して、不要なものをすべて削除し、各値行の他のテキストを置き換えます。

  1. 「検索」->「検索」->「マーク」機能を使用して、保持/コピーする各行をマークし、テキストをマークする前に「ブックマーク行」にチェックマークを付けます。
  2. [検索]-> [ブックマーク]-> [マークされていない行の削除]を選択します。
  3. 「検索」->「検索」->「置換」を使用して、保持/コピーしたくない他のテキストを何も置き換えません
  4. 残りのテキストを保存するか、コピーします。

[検索]-> [ブックマーク]-> [ブックマークされた行のコピー]を使用して同様のことを行うこともできます。

したがって、技術的にはまだマークされたテキストをコピーすることはできませんが、マークされたテキストで行をブックマークしてから、ブックマークされた行またはマークされていない行に対してさまざまな操作を実行できます。

95
Colin

Googleの検索結果でこの投稿がヒットするように、完全性のためにこれを追加しています。

実際には、1つのステップではなく、正規表現検索からすべてをコピーできます。

  1. [検索]の下の[マーク]を使用し、[検索対象]に正規表現を入力します。
  2. [ブックマーク行]を選択し、[すべてマーク]をクリックします。
  3. [検索]-> [ブックマーク]-> [ブックマークされた行のコピー]をクリックします。
  4. 新しいドキュメントに貼り付けます。
  5. 正規表現の一部ではない行内の不要なテキストを検索して置換する必要がある場合があります。
22
gschoep

これは https://superuser.com/questions/477628/export-all-regular-expression-matches-in-textpad-or-notepad-as-a-list に似ています。

あなたが抽出しようとしていることを願っています:
「パフォーマンス」
"メンテナンス"
「システムの安定性」

方法は次のとおりです-ステップ1/3:[検索]-> [検索]-> [置換]タブを開き、[正規表現ラジオ]ボタンを選択します。 Find what:(\ "[a-zA-Z0-9\s] + \")およびReplace with:\ n\1に入力し、Replace All butttonをクリックします。 Before Clicking Replace All

ステップ2/3:最初のステップの後、キーワードは次の行に表示されます(次の画像を参照)。 [マーク]タブに移動し、[検索対象:フィールド]に同じ正規表現を入力します。ブックマーク行にチェックマークを付けます。次に、「すべてマーク」をクリックします。 Bookmark the lines

ステップ3/3:検索に移動->ブックマーク->マークされていない行を削除します。 Remove Unmarked lines

最終的な結果は次のようになります Final Result

10
Chetan

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
8
Fidel

いいえ、Notepad ++ 5.6.2の時点では、これは不可能のようです。列の選択(Alt + Selection)は可能ですが、複数の選択は明らかに実装されていないため、検索機能でもサポートされていません。

2
AndiDog

同じ問題がありました。新しいタブに正規表現の一致を一覧表示できます。PSPadEditorのすべての一致は、Notepad ++と非常によく似ています。

Ctrlキーを押しながらFキーを押して検索し、正規表現オプションを確認し、正規表現を入力して[リスト]をクリックします。

0
Jancsik Zsolt

メモ帳では不可能ですが、HERE'S THE EASY SOLUTION

フリーウェアのExpresso v3.1が必要です http://www.ultrapico.com/ExpressoDownload.htm

私は別のフリーソフトウェア、Expresso by Ultrapicoに頼りました。

  1. インストールしたら、「テストモード」タブに移動します。
  2. REGEXを「正規表現」ペインにコピーします。
  3. 検索するテキスト全体をExpressoの[サンプルテキスト]ペインに貼り付け、

  4. 「一致を実行」ボタンを押します。 「検索結果ペイン」と「エクスポート先...」または「一致したテキストをクリップボードにコピー」を右クリックします。

NB:元の作者は@ Andreas Janssonですが、コメントに隠されているため、ページはGoogle検索で上位にランクされています。

0
Khado Mikhal