正規表現とNotepad ++ですべての非ASCII文字を削除するにはどうすればよいですか?


147

たくさん検索しましたが、Notepad ++から非ASCII文字を削除する方法はどこにも書かれていません。

検索と置換で書き込むコマンドを知る必要があります(画像を使用すると、すばらしいでしょう)。

  • ホワイトリストを作成し、すべてのASCII単語/行をブックマークして、ASCII以外の行がマークされないようにする場合

  • ファイルが非常に大きく、すべてのASCII行を選択できず、ASCII以外の文字を含む行のみを選択したい場合...

回答:


263

この式は、非ASCII値を検索します。

[^\x00-\x7F]+

「検索モード=正規表現」にチェックを入れ、をクリックしますFind Next

ソース:Regex任意のASCII文字


4
そして、それが明らかでない場合に備えて、 "^"を削除すると、ASCII行が検索されます
Mike M

7
うまく動作しますが、設定する必要がありましたEncoding->Encode in ANSI。他に何も見つけることができませんでした。
FoamyGuy 2014年

1
regexp-searchオプション(アスタリスクボタン)を備えたnetbeansで完全に動作します
Teson

VS-Codeで動作します。Regex検索オプションをクリックすることを忘れないでください!
yashhy 2017

4
\ rと\ n-復帰文字と改行文字を保持したい場合は、次の正規表現を使用できます:[\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler

53

あなたがメニューに行けばメモ帳++では、検索範囲の文字検索非ASCII文字(128-255)その後、各非ASCII文字に文書による手順をすることができますが。

ASCII以外のすべての文字についてドキュメントをループする場合は、「折り返し」にチェックマークを付けてください。

スクリーンショット「範囲内を検索」


3
これは適切に機能しますが、すべての結果がリストに表示されるわけではなく、「置換」オプションもありません
Alex

きちんと...私は常に非ASCIIの正規表現を忘れており、このページに戻るために毎回それをグーグルしなければならないので:)
Jean-Francois T.

27

ProGMによる回答に加えて、NULやACKなどのボックスに文字が表示され、それらを取り除きたい場合は、それらはASCII制御文字(0〜31)であり、次の式で検索して削除できます。

[\x00-\x1F]+

非ASCIIおよびASCII制御文字をすべて削除するには、この正規表現に一致するすべての文字を削除する必要があります。

[^\x1F-\x7F]+

との値は\x00\x1FProGMによる回答ですでに一致しています。
Unihedron、2015年

2
保持したい値として一致します。あなたがそれらを取り除きたい場合に備えて、私はちょうどこれを提案していました。
Brunorey、2015年

最後の例は、単位区切り文字を除外するために20から開始する必要があります。7Fも制御文字なので除外するかもしれません。
fgb 2016年

鮮やかさ!私が使用してqdapのRパッケージを使用して、すべての厄介な非ASCII文字を削除:mgsub("[^\x1F-\x7F]+", "", text_vector, fixed = FALSE)
パブロAdames

22

非ASCII文字をすべて削除するには、次の置換を使用できます。 [^\x00-\x7F]+

非ASCIIの削除

文字を強調表示するには、検索ウィンドウでマーク機能を使用することをお勧めします。これにより、非ASCII文字が強調表示され、そのうちの1つを含む行にブックマークが配置されます。

代わりにASCII文字を強調表示してブックマークを付ける場合は、正規表現[\x00-\x7F]を使用してブックマークを追加できます。

非ASCIIの強調表示

乾杯


1
あなたが検索式をコピー-ペーストしたい場合は、[^ \ x00- \ x7F] +
ハイエナ

2
\ rと\ n-復帰文字と改行文字を保持したい場合は、次の正規表現を使用できます:[\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler

4

新しい行を保持するには:

  1. 最初に新しい行の文字を選択します...私は#を使用しました。
  2. 置換オプションを選択、拡張。
  3. 入力\ n#で置換
  4. すべて置換を押す

次:

  1. [置換]オプションの[正規表現]を選択します。
  2. これを入力:[^ \ x20- \ x7E] +
  3. 空のまま置き換えます
  4. すべて置換を押す

次に、[置換]オプションを選択し、[拡張]をクリックして#を\ n

:)今、あなたはきれいなASCIIファイルを持っています;)


3

もう1つの優れたトリックは、エディターでUTF8モードに切り替えて、これらの面白い文字を実際に表示して自分で削除できるようにすることです。


1

別の方法...

  1. Text FXプラグインがない場合はインストールします
  2. TextFXメニューオプションに移動->すべての印刷できない文字を#に消去します。すべての無効な文字を3つの#記号に置き換えます
  3. [検索/置換]に移動し、###を探します。スペースに置き換えてください。

これは、正規表現を思い出せない場合、または検索する必要がない場合に便利です。しかし、他の人が述べた正規表現も良い解決策です。


すべての文字をザッピングすると、すべての種類の句読点が###に置き換えられます。私が期待する解決策は次のとおりです。「&」を「」で置き換えます。「&」を「」で置き換えます。など
Kasim Husaini

これは正常に機能しますが、このツールは面白い文字を#ではなく1つの#文字に置き換えます。注意してください。
Raghav

1
Text FXプラグインは非推奨になり、すぐに利用できなくなる可能性もあります。例えば参照TextFXの未来を - 「リストは十分な長さに成長すると、それがうまくコミュニティを務めている老化働き者に別れを告げるために実用的になります。」
Peter Mortensen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.