Regex: заменить "что-то" символом юникода - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь выяснить, как найти определенный символ и заменить его на символ Unicode. В моем примере я хочу найти все пробелы (\ s) и заменить их узким или тонким пробелом (например, Unicode U + 2006).


Образец текста

8. 3. 2014


Поиск шаблона

(\d{1,2}\.)(\s?)(\d{1,2}\.)(\s?)(\d{2,4})


Замена шаблона

$1{UNICODE}$3{UNICODE}$5


По какой-то причине я не могу заменить (!) Символ Unicode, я могу искать только один. Я работаю с приложением RegEx под названием »RegExRX 3«, чтобы проверить мои строки. В конце я хочу иметь возможность использовать его с функциональностью Adobe InDesign GREP.

Я знаю, что могу просто скопировать и вставить правильный пробел на место, но мне интересно, как это сделать с символом Unicode.

Заранее спасибо!

1 Ответ

1 голос
/ 20 марта 2020

InDesign использует Perl -совместимые регулярные выражения (pcre). Получение символа Unicode в строку замены выполняется с помощью \x{XXXX}, где XXXX - это шестнадцатеричный код символа:

$1\x{2009}$2\x{2009}$5

Но в целом вы можете заменить любой символ, который можете набрать. Просто вставьте фактические пробелы в диалог поиска и замены:

$1 $3 $5

Вы можете использовать утилиты вашей ОС, чтобы извлечь пробел из списка доступных символов, для Windows это "Карта символов" «инструмент, где тонкое пространство можно найти в поддиапазоне Юникод« Общая пунктуация ». Поиск «тонкого пространства» также работает. В MacOS есть «Средство просмотра символов», которое может делать то же самое.

Thin Space selection on Windows

...