2016-08-05 74 views
8

什么字符类或Unicode属性将匹配任何Unicode Perl中的元音?如何匹配Unicode元音?

错误的答案:[aeiouAEIOU]。 (sermon here,衣物清单中的物品#24)

perluniprops提到仅用于Hangul和印度语脚本的元音。

让我们抛开问题是什么元音。是的,在某些情况下,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 

与国际化问题时,最重要的是要想想你真正需要的,但你甚至没有提到你正在努力完成的任务。

找到元音?这不可能是你实际想要做的。我可以在一个词中看到用于识别元音听起来的用法,但这些元音通常由多个字母(例如英语中的“oo”和“in”,“an”/“en”,“ou”,“ ai“,”au“/”eau“,法语中的”eu“),并且它将是特定于语言的。

就目前而言,您正在寻求一个全球性解决方案,但您正在以当地术语来定义问题。首先需要定义您正在尝试解决的实际问题。

+0

对于这个问题:目前还不清楚“元音”对表意文字或音节文字的意义。 – duskwuff

+0

@ikegami:让我们假设问题是如何用一个撇号替换任何单词中包含单个拉丁字母l和任何元音的单词之间的水平空间,以便在法语单词中实现法语的省略但是也是这样的:'j'aime l'ἐπιστήμη''。像这样:''aime lἐπιστήμη“=〜s/\ b l \ b \ K \ h +(?= \ p {Vowel})/'/ gx'; –

+0

@duskwuff:由于表意字母或音节字符不涉及元音,因此问题根本不存在。 –