2016-04-03 11 views
0

Ben gibi bir yöntem ile karşılaştıBu Elixir regex eşleşmesinde neden regex'te bu karakterlere ihtiyacınız var?</p> <pre><code>@spec split_words(String.t) :: [String.t] defp split_words(text) do Regex.scan ~r/(*UTF)[p{L}0-9-]+/i, text end </code></pre> <p>Gerçekten şu testi geçmek mümkün oluyor:

(*UTF) nedir
test "German" do 
    expected = %{"götterfunken" => 1, "schöner" => 1, "freude" => 1} 
    assert Words.count("Freude schöner Götterfunken") == expected 
    end 

- O İksir spesifik veya regex kavramdır? Sanırım dizeyi UTF kodlamasına "çevirmek". Ve ne hakkında \p{L} - umlaut karakteri içeren bir alfabe kullanmayı bilmenizi sağlayan bir tür "genişletici" bu mu? Bir UTF-8 kodlu dize olarak hedef dize (Aksi dize okunur okumak için https://github.com/alxndr/exercism/blob/master/elixir/word-count/word_count.exs#L25

cevap

2

Hayır, (*UTF) PCRE regex motoru (Elixir'in kullanılan muhtemelen bir) anlatıyor:

bu depoda gördüm bir kerede bir bayt). Ancak hedef dizgeyi yayınlamaz.

\p{L}, tüm harfleri (tüm alfabelerde, vurgularla veya vurgu olmadan) içeren bir unicode karakter sınıfıdır. Burada

daha infos: http://pcre.org/original/pcre.txt

+0

Not: regex101.com diyor (* UTF) ve (* UTF8) bilinmeyen fiiller, bu yüzden tüm PCRE tatlar – Laurel

+0

regex101 doesn bu regex lezzet özgü var olacağını tahmin ediyorum (* UTF) 've' (* UTF8) 'desteği yoktur, hepsi bu. Bu bir PCRE özelliği. –

+1

Eh bugün 2 regex101 hata keşfettim .... – Laurel