Мне нужна помощь с регулярным выражением (Короче говоря, я создаю средство проверки грамматики для языка «папьяменто», языка, на котором говорят на островах АВС (карибский)), и некоторые слова могут быть сокращены, и яне знаю, как оглянуться назад и проигнорировать букву)
У меня есть слово «приди» (есть) и «есть» будет «comiendo». Видите, как «я» был добавлен между «м» и «е»? Я пытаюсь, чтобы мое регулярное выражение по-прежнему могло распознавать слово «приходить» с суффиксом «иэндо» и без него, проще всего было бы добавить группу без захвата (необязательно, я просто используюзахват группы для вещей, которые мне не нужны для захвата.) и проверка обоих по отдельности /com(?:iendo|e)?/
, но я имею дело с более чем 16 тысячами слов, и неэффективно добавлять регулярное выражение для каждого отдельного слова в отдельности.
Мой вопрос таков: есть ли способ оглянуться назад и проигнорировать букву «е»?
/(come((?<=e)iendo))/
, но при этом игнорировать «е», это регулярное выражение проверяет только на «come "and" comeiendo "(что неверно)
Чтобы быть немного яснее, у меня есть string[]
со всеми словами, давайте использовать этот массив, например { "come", "bisti", "pasa" }
, ониВсе глаголы в своей инфинитивной форме. Я хочу, чтобы регулярное выражение могло обнаружить его в бесконечной форме и форме, в которой выполняется действие (герунд). «приход» - это глагол в его инфинитивной форме, а «комьендо» - это герунд.
в моем регулярном выражении у меня это
string[] words = { "come", "bisti", "pasa" };
string pattern = $@"/({string.Join("|", words)})/";
// which is same as:
string pattern = @"/(come|bisti|pasa)/";
, но он проверяет только инфинитивную форму,в большинстве случаев герунда оканчивается на «ando» или «iendo» в зависимости от последней буквы глагола. Но в этом случае я хочу сосредоточиться только на «прийти» и «comiendo», потому что это единственная, которая заменяет последнюю букву (то есть «е») на «iendo», (другие глаголы просто добавляют «ndo» кконец).
поэтому с регулярным выражением я могу думать только о том, чтобы посмотреть, заканчивается ли глагол «е», затем проигнорировать «е» и проверить глагол (без «е»). ("com"), плюс суффикс ("iendo").
"come" => "com" + "iendo"
и это насколько я могу получить
string[] words = { "come", "bisti", "pasa" };
string pattern = $@"/((?:{string.Join("|", words)})(?:(?<=e)iendo|(?<=a)ndo)?)/";
// which is same as
string pattern = @"/((?:come|bisti|pasa)(?:(?<=e)iendo|(?<=a)ndo)?)/";
но это регулярное выражение работает только для "comeiendo", а не для "comiendo"