Вопрос по regex, perl, unicode – Regex для прописных букв Unicode не соответствует «Ó»?

8

Кажется, он не распознает акцентированный & # xD3; в верхнем регистре

#!/usr/bin/env perl
use strict;
use warnings;
use 5.14.0;
use utf8;
use feature 'unicode_strings';

" SIMÓN " =~ /^\s+(\p{Upper}+)/u;
print "$1\n";

возвращается

SIM

Perl должен иметь возможность использовать данные Unicode, которые уже помечают теги & # xD3; в верхнем регистре. Из Emacsdescribe-char

character code properties: customize what to show
  name: LATIN CAPITAL LETTER O WITH ACUTE
  old-name: LATIN CAPITAL LETTER O ACUTE
  general-category: Lu (Letter, Uppercase)
  decomposition: (79 769) ('O' '́')
Ах, мои извинения, @pst. Я только действительно смотрел на линиюcount а не содержание. Вы правы в том, что само RE может быть упрощено. paxdiablo
Я не вижу, как вы могли бы получитьmore минимальный случай, чем то, что предусмотрено :-) paxdiablo

Ваш Ответ

1   ответ
10

Вы пропали без вестиuse open ':std', ':locale'; правильно закодировать ваш вывод.

Если это не работает, ваш файл не закодирован с использованием UTF-8, даже если вы скажете Perl, что это так.

Это сработало! Я вообще ничего не понимаю, так как в моем примере используется только строка, а не файл ... Я думаю, что-то не получается, когда я делаюprint $1 user525602
Именно так.:std вызывает кодирование строк, отправляемых в STDOUT и STDERR, и декодирование байтов из STDIN.

Похожие вопросы