Как удалить все символы, не входящие в ASCII, с помощью regex и Notepad ++?

147

Я много искал, но нигде не написано, как удалить не-ASCII символы из Notepad ++.

Мне нужно знать, какую команду написать в find и заменить (с картинкой было бы здорово).

  • Если я хочу создать белый список и добавить в закладки все слова / строки ASCII, чтобы не-ASCII строки были отмечены

  • Если файл довольно большой и не может выбрать все строки ASCII, а просто выбрать строки, содержащие символы, не входящие в ASCII ...

Texh
источник

Ответы:

263

Это выражение будет искать значения не ASCII:

[^\x00-\x7F]+

Отметьте галочкой «Режим поиска = Регулярное выражение» и нажмите Find Next.

Источник: Regex любой символ ASCII

ProGM
источник
4
и на всякий случай, если это не очевидно, если вы удалите «^», вы ищете строки ASCII
Mike M
7
Работает хорошо, но я должен был установить Encoding->Encode in ANSI. Не смог найти ничего другого.
FoamyGuy
1
Отлично работает в NetBeans с опцией поиска по регулярному выражению (звездочка)
Teson
работает в VS-коде, не забудьте выбрать опцию поиска Regex!
yashhy
4
Если вы хотите сохранить \ r и \ n - символы возврата каретки и перевода строки - вы можете использовать это регулярное выражение: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler
53

В Notepad ++, если вы перейдете в меню « Поиск» → « Найти символы в диапазоне» → « Не-ASCII-символы» (128–255), вы можете перейти к документу до каждого не-ASCII-символа.

Обязательно отметьте галочкой « Обтекание », если хотите зациклить документ для всех символов, не относящихся к ASCII.

скриншот "Найти в диапазоне"

Anon Y. Mous
источник
3
Это хорошо работает, но не отображает все результаты в списке и без опции «заменить»
Alex
Опрятно ... потому что я всегда забываю регулярное выражение для не-ASCII и должен каждый раз
Жан-Франсуа Т.
27

В дополнение к ответу ProGM, если вы видите символы в полях типа NUL или ACK и хотите от них избавиться, это контрольные символы ASCII (от 0 до 31), вы можете найти их с помощью следующего выражения и удалить их:

[\x00-\x1F]+

Чтобы удалить все не-ASCII И ASCII управляющие символы, вы должны удалить все символы, соответствующие этому регулярному выражению:

[^\x1F-\x7F]+
brunorey
источник
Значения от \x00и \x1Fуже совпадают в ответе ProGM.
Юниэдр
2
Они соответствуют ценностям, которые вы хотели бы сохранить. Я просто предложил это на случай, если вы захотите от них избавиться.
брунорей
Последний пример должен начинаться с 20, чтобы исключить символ разделителя единиц. Может быть, исключить 7F, а также это контрольный персонаж тоже.
ФГБ
Brilliant! Я удалил все надоедливые символы, не входящие в ASCII, используя пакет qdap R, используя:mgsub("[^\x1F-\x7F]+", "", text_vector, fixed = FALSE)
Pablo
22

Чтобы удалить все символы не ASCII, вы можете использовать следующую замену: [^\x00-\x7F]+

Удаление не ASCII

Чтобы выделить символы, я рекомендую использовать функцию « Отметить» в окне поиска: она выделяет не-ASCII символы и ставит закладку в строках, содержащих один из них.

Если вы хотите выделить и поставить закладку на символы 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;)

TooGeeky
источник
3

Еще один хороший трюк - перейти в режим UTF8 в редакторе, чтобы вы могли увидеть этих забавных персонажей и удалить их самостоятельно.

Гидон Мудрый
источник
1

По-другому...

  1. Установите плагин Text FX, если у вас его еще нет
  2. Перейдите к пункту меню TextFX -> запишите все непечатаемые символы в #. Он заменит все недопустимые символы с символами 3 #
  3. Зайдите в Find / Replace и найдите ###. Замените это пробелом.

Это хорошо, если вы не можете вспомнить регулярное выражение или не хотите его искать. Но регулярное выражение, упомянутое другими, также является хорошим решением.

goku_da_master
источник
При замене всех символов все знаки препинания заменяются на ###. Решение, которое я ожидал бы, это: заменить «&» на «. Заменить« & »на» и т. Д.
Kasim
Работает нормально, однако инструмент заменяет забавные символы одним # символом, а не тремя. пожалуйста, обратите внимание.
Raghav
1
Плагин Text FX устарел и может быть недоступен. См., Например, TextFX's Future - «Когда список будет расти достаточно долго, станет практичным прощаться со стареющей рабочей лошадкой, которая хорошо послужила сообществу».
Питер Мортенсен