Как я могу использовать неназванные группы регулярных выражений в C# внутри моего регулярного выражения?

Эй, так что мое текущее регулярное выражение @"(into)(to)add\s[^\s]{1,}\1|\2[^\s]{1,}" Я хочу, чтобы вход был чем-то "добавить слово в / в категорию", регулярное выражение в целом работает нормально, но только \1|\2 частично, я пытался использовать группы и все виды решений, но я просто не могу понять, как я могу сделать это так, чтобы ввод into или же to

Может кто-нибудь мне помочь? (это в C# и с использованием Regex учебный класс)

2 ответа

Решение

Если я вас правильно понял, вам не нужны обратные ссылки на (неназванные) группы, вы можете использовать простое чередование, например:

@"add \w+ (into|to) \w+"

Это выберет либо into или же to в строке поиска.

Редактировать:

Давайте получим немного больше "продвинутых", используя optional знак '?":

@"add \w+ (in)?to \w+"

Это будет соответствоватьin"ноль или один раз, а затем"to', так что будет соответствовать into так же как toТочно так же, как оригинал RegEx.

Edit2:

У меня есть ощущение, что вы хотите использовать переменную внутри вашего RegEx, вы, конечно, можете сделать это так:

string search = "into|to";
RegEx regEx = new ReqEx(@"add \w+ (" + search + ") \w+");

Из вашего приведенного примера я думаю, что вы ищете регулярное выражение, как add\s\w+\s(into|to)\s\w+, Ваше текущее регулярное выражение соответствует только строкам, начинающимся с "intoto", что, вероятно, не то, что вы хотите.

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