Как я получаю список всех символов Unicode, которые имеют данное свойство?

Я стараюсь избегать, удаляет или обновления, которые я явно не запрашивал в SQL-сервере.

Или посредством расположения каскадом или с помощью триггеров. Они имеют тенденцию кусать Вас в заднице некоторое время по линии, или при попытке разыскать ошибку или при диагностировании проблем производительности.

то, Где я использовал бы их, находится в гарантии непротиворечивости для не очень много усилия. Для получения того же эффекта, необходимо было бы использовать хранимые процедуры.

6
задан tchrist 29 March 2012 в 18:24
поделиться

4 ответа

Список символов Юникода для каждого класса генерируется из спецификации Юникода при компиляции Perl и обычно сохраняется в / usr / lib / perl-YOURPERLVERSION / unicore / lib / gc_sc /

Например, список диапазонов символов Юникода, соответствующих IsDigit (он же \ d), хранится в файле /usr/lib/perl-YOURPERLVERSION/unicore/lib/gc_sc/Digit.pl

6
ответ дан 17 December 2019 в 00:12
поделиться

Еще лучше, чем unicore / lib / gc_sc / Digit.pl , это unicore / To / Digit.pl . Это прямое отображение цифровых символов Unicode (ну, на самом деле их смещений) в их числовые значения. Это означает вместо:

use Unicode::Digits qw/digit_to_int/;

my @digits;
for (split "\n", require "unicore/lib/gc_sc/Digit.pl") {
    my ($s, $e) = map hex, split;
    for (my $ord = $s; $ord <= $e; $ord++) {
        my $chr = chr $ord;
        push @{$digits[digits_to_int $chr]}, $chr;
    }
}

for my $i (0 .. 9) {
    my $re = join '', "[", @{$digits[$i]}, "]";
    $digits[$i] = qr/$re/;
}

Я могу сказать:

my @digits;
for (split "\n", require "unicore/To/Digit.pl") {
    my ($ord, $val) = split;
    my $chr = chr hex $ord;
    push @{$digits[$val]}, $chr;
}

for my $i (0 .. 9) {
    my $re = join '', "[", @{$digits[$i]}, "]";
    $digits[$i] = qr/$re/;
}

Или даже лучше:

my @digits;
for (split "\n", require "unicore/To/Digit.pl") {
    my ($ord, $val) = split;
    $digits[$val] .= "\\x{$ord}";
}
@digits = map { qr/[$_]/ } @digits;
1
ответ дан 17 December 2019 в 00:12
поделиться

соответствие символов / \ d / полностью зависит от вашей реализации регулярного выражения (хотя стандартные 0-9 гарантированы). В случае Perl используемый языковой стандарт perl определяет, какие символы считаются буквенными и цифрами.

0
ответ дан 17 December 2019 в 00:12
поделиться

Это невозможно сделать, не перебирая все символы. (если вы создаете огромную строку со всеми из них и используете регулярное выражение, вам все равно придется выполнить цикл хотя бы один раз, чтобы создать строку).

0
ответ дан 17 December 2019 в 00:12
поделиться
Другие вопросы по тегам:

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