Exemple #1
0
        static string Example_1()
        {
            var letters = new string[] { "a", "b", "c" };

            IRegexBuilder regex = new RegexBuilder()
                                  .StartGroup("first_letter") // on crée un group de capture nommé
                                  .Disjunction(letters)
                                  .AtLeast(1)
                                  .CloseGroup();

            return(regex.Regex());
        }
        public string WordReadingWithSpacesRegex()
        {
            IRegexBuilder regex = new RegexBuilder()
                                  .Raw(SingleSyllableRegex())
                                  .StartGroup()
                                  .Char(' ') // chinese space
                                  .Raw(SingleSyllableRegex())
                                  .CloseGroup()
                                  .KleenStar();

            return($"^{regex.Regex()}$");
        }
        private string SingleSyllableRegex()
        {
            IRegexBuilder regex = new RegexBuilder()
                                  .Char('˙').AtMost(1)
                                  .Disjunction(
                // voyelle seule, ex: 阿 ㄚ
                new RegexBuilder()
                .StartGroup("vowel_only")
                .Disjunction(vowels.KeysArray())
                .CloseGroup(),

                // médiale seule, ex: 五 ㄨ
                new RegexBuilder()
                .StartGroup("medial_only")
                .Disjunction(medials.KeysArray())
                .CloseGroup(),

                // finale seule, ex: 案 ㄢ
                new RegexBuilder()
                .StartGroup("rime_only")
                .Disjunction(rimes.KeysArray())
                .CloseGroup(),

                // consonne syllabique seule (seulement ㄓ, ㄔ, ㄕ, ㄖ, ㄙ)
                new RegexBuilder()
                .StartGroup("syllabic_consonant_only")
                .Disjunction(syllabic_consonants.KeysArray())
                .CloseGroup(),

                // médiale + rime, ex: 王 ㄨㄤ
                new RegexBuilder()
                .StartGroup()
                .Disjunction(medials.KeysArray())
                .Disjunction(rimes.KeysArray())
                .CloseGroup(),

                // consonne + voyelle, ex: 怕 ㄆㄚ
                new RegexBuilder()
                .StartGroup("consonant_and_vowel")
                .Disjunction(consonants.KeysArray())
                .Disjunction(vowels.KeysArray())
                .CloseGroup(),

                // consonne + médiale, ex: 不 ㄅㄨ
                new RegexBuilder()
                .StartGroup("consonant_and_medial")
                .Disjunction(consonants.KeysArray())
                .Disjunction(medials.KeysArray())
                .CloseGroup(),

                // consonne + rime
                new RegexBuilder()
                .StartGroup("consonant_and_rime")
                .Disjunction(consonants.KeysArray())
                .Disjunction(rimes.KeysArray())
                .CloseGroup(),

                // consonne + médiale + vowel, ex: 別 ㄅㄧㄝ
                new RegexBuilder()
                .StartGroup("consonant_and_medial_and_vowel")
                .Disjunction(consonants.KeysArray())
                .Disjunction(medials.KeysArray())
                .Disjunction(vowels.KeysArray())
                .CloseGroup(),

                // consonne + médiale + rime, ex: 囧 ㄐㄩㄥ (jiong)
                new RegexBuilder()
                .StartGroup("consonant_and_medial_and_rime")
                .Disjunction(consonants.KeysArray())
                .Disjunction(medials.KeysArray())
                .Disjunction(rimes.KeysArray())
                .CloseGroup()

                ).Disjunction(tones.KeysArray().Take(4).ToArray()).AtMost(1);

            return(regex.Regex());
        }