2016-08-05 7 views
8

Какой класс символа или свойство Юникода будет соответствовать любому Unicode гласный в Perl?Как совместить гласные Юникод?

Неверный ответ: [aeiouAEIOU]. (sermon here, артикул № 24 в списке белья)

perluniprops упоминает гласные только для скриптов Хангыла и Индиса.

Давайте рассмотрим вопрос о том, что такое гласный. Да, i не может быть гласным в некоторых контекстах. Таким образом, любой символ, который может быть гласным будет делать.

ответ

7

Нет такого имущества.

$ uniprops --all a 
U+0061 <a> \N{LATIN SMALL LETTER A} 
    \w \pL \p{LC} \p{L_} \p{L&} \p{Ll} 
    AHex POSIX_XDigit All Alnum X_POSIX_Alnum Alpha X_POSIX_Alpha Alphabetic Any ASCII 
     ASCII_Hex_Digit Assigned Basic_Latin ID_Continue Is_IDC Cased Cased_Letter LC 
     Changes_When_Casemapped CWCM Changes_When_Titlecased CWT Changes_When_Uppercased CWU Ll L 
     Gr_Base Grapheme_Base Graph X_POSIX_Graph GrBase Hex X_POSIX_XDigit Hex_Digit IDC ID_Start 
     IDS Letter L_ Latin Latn Lowercase_Letter Lower X_POSIX_Lower Lowercase PerlWord POSIX_Word 
     POSIX_Alnum POSIX_Alpha POSIX_Graph POSIX_Lower POSIX_Print Print X_POSIX_Print Unicode Word 
     X_POSIX_Word XDigit XID_Continue XIDC XID_Start XIDS 
    Age=1.1 Age=V1_1 Block=Basic_Latin Bidi_Class=L Bidi_Class=Left_To_Right BC=L 
     Bidi_Paired_Bracket_Type=None Block=ASCII BLK=ASCII Canonical_Combining_Class=0 
     Canonical_Combining_Class=Not_Reordered CCC=NR Canonical_Combining_Class=NR 
     Decomposition_Type=None DT=None East_Asian_Width=Na East_Asian_Width=Narrow EA=Na 
     Grapheme_Cluster_Break=Other GCB=XX Grapheme_Cluster_Break=XX Hangul_Syllable_Type=NA 
     Hangul_Syllable_Type=Not_Applicable HST=NA Indic_Positional_Category=NA InPC=NA 
     Indic_Syllabic_Category=Other InSC=Other Joining_Group=No_Joining_Group JG=NoJoiningGroup 
     Joining_Type=Non_Joining JT=U Joining_Type=U Script=Latin Line_Break=AL 
     Line_Break=Alphabetic LB=AL Numeric_Type=None NT=None Numeric_Value=NaN NV=NaN 
     Present_In=1.1 IN=1.1 Present_In=2.0 IN=2.0 Present_In=2.1 IN=2.1 Present_In=3.0 IN=3.0 
     Present_In=3.1 IN=3.1 Present_In=3.2 IN=3.2 Present_In=4.0 IN=4.0 Present_In=4.1 IN=4.1 
     Present_In=5.0 IN=5.0 Present_In=5.1 IN=5.1 Present_In=5.2 IN=5.2 Present_In=6.0 IN=6.0 
     Present_In=6.1 IN=6.1 Present_In=6.2 IN=6.2 Present_In=6.3 IN=6.3 Present_In=7.0 IN=7.0 
     Present_In=8.0 IN=8.0 SC=Latn Script=Latn Script_Extensions=Latin Scx=Latn 
     Script_Extensions=Latn Sentence_Break=LO Sentence_Break=Lower SB=LO Word_Break=ALetter WB=LE 
     Word_Break=LE 

Самое главное при работе с i18n, чтобы думать о том, что вы на самом деле нужно, но вы даже не упомянул, что вы пытаетесь достичь.

Найти гласные? Это не может быть то, что вы на самом деле пытаетесь сделать. Я мог видеть, что слово «» звучит словом, но они часто формируются из нескольких букв (например, «oo» на английском языке и «in», «an»/«en», «ou», ai "," au "/" eau "," eu "на французском языке), и это будет специфично для языка.

Как бы то ни было, вы просите глобальное решение, но вы определяете проблему в локальных терминах. Сначала вам нужно начать с определения фактической проблемы, которую вы пытаетесь решить.

+0

В этом отношении: непонятно, что означало бы «гласный» для идеографических или слоговых символов. – duskwuff

+0

@ikegami: Скажем, проблема заключается в том, как заменить апостроф для горизонтального пространства между любым словом, состоящим исключительно в одной маленькой латинской букве 'l', и любым гласным, чтобы добиться французского эликсира не только среди французских слов, но и также что-то вроде этого: 'j'aime l'ἐπιστήμη'. Например: '' j aime l ἐπιστήμη "= ~ s/\ b l \ b \ K \ h + (? = \ P {Vowel})/'/ gx'; –

+0

@ duskwuff: поскольку идеографические или слоговые символы не включают гласные, проблема просто не возникает для них. –