2016-08-05 34 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:由於表意字母或音節字符不涉及元音,因此問題根本不存在。 –