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


147

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

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

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

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

Ответы:


263

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

[^\x00-\x7F]+

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

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


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.

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


3
Это хорошо работает, но не отображает все результаты в списке и без опции «заменить»
Alex

Опрятно ... потому что я всегда забываю регулярное выражение для не-ASCII и должен каждый раз
Жан-Франсуа Т.

27

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

[\x00-\x1F]+

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

[^\x1F-\x7F]+

Значения от \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;)


3

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


1

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

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

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


При замене всех символов все знаки препинания заменяются на ###. Решение, которое я ожидал бы, это: заменить «&» на «. Заменить« & »на» и т. Д.
Kasim

Работает нормально, однако инструмент заменяет забавные символы одним # символом, а не тремя. пожалуйста, обратите внимание.
Raghav

1
Плагин Text FX устарел и может быть недоступен. См., Например, TextFX's Future - «Когда список будет расти достаточно долго, станет практичным прощаться со стареющей рабочей лошадкой, которая хорошо послужила сообществу».
Питер Мортенсен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.