C# Regex error Quantifier {x,y} ничего не следует

Я написал небольшую программу, которая преобразует текст на английском языке в Pig Latin в Visual Basic. В настоящее время я конвертирую его в язык C#. И в процессе преобразования я сталкиваюсь с ошибкой, связанной с регулярными выражениями.

Правила, с которыми я работаю:

  • Строка начинается с a, e, i, o или u
  • Строка содержит a, e, i, o, u или y

В VB я написал эти правила следующим образом (обе переменные являются bool):

isVowel = words(counter) Like "[aeiou]*"
isInside = words(counter) Like "*[aeiouy]*"

куда Private index As Integer = -1 Private words(index) As String,

И цикл For

For counter As Integer = 0 To words.Length - 1
    isVowel = words(counter) Like "[aeiou]*"
    isInside = words(counter) Like "*[aeiouy]*"

    //proceed with conversion logic
Next counter

После исследования я использовал следующую статью в качестве ссылки, чтобы помочь с конверсией. Я закончил преобразование этих строк следующим образом:

isVowel = Regex.IsMatch(words[counter], "[aeiou]*");
isInside = Regex.IsMatch(words[counter], "*[aeiouy]*");

Сейчас я проверяю оба эти правила на моей первой строке в тексте, которая называется Адам. В VB, для первой буквы a И isVowel, и isInside возвращают true. Для C# isVowel возвращает true, но isInside возвращает следующую ошибку вместо true, как я и надеялся:

Quantifier {x,y} following nothing

Я искал темы в SO (это были конкретные случаи, но я пытался использовать их ответы в качестве возможных указателей) вместе с SO wiki, которую он предлагал. Я попытался обновить правило, основываясь на том, что я узнал из вики и этой ветки (и в этой я буду использовать только пару для ссылки из 10+ найденных мной тем) о *, + и?. Я пытался использовать оба + и? на предыдущем шаблоне персонажа. Но он возвращает ту же ошибку.

Можете ли вы указать мне правильное направление, почему это правило возвращает ошибку? Я что-то упустил в C#-специфичном регулярном выражении?

0 ответов

Другие вопросы по тегам