Как я могу заменить более одной строки другой, используя только одно Regex, или мне нужно использовать несколько строк Regex и temp? - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть переменная, которой присваивается значение, подобное этому:

vm.WordType = phrase.WordType;

, где значение фразы .WordType может быть примерно таким:

"Godan verb with ru ending, Transitive Verb"

, и я хотел быизмените его на

"Godan v with ru end, Transitive v"

Я могу использовать Regex, например, чтобы заменить глагол на v, но есть ли способ, которым я могу использовать Regex, чтобы сделать больше замен, таких как заменить «окончание» на «конец» или сделатьЯ должен как-то связать вместе несколько регулярных выражений и использовать временные переменные?

vm.WordType = Regex.Replace(phrase.WordType, "verb", "v", RegexOptions.IgnoreCase);

1 Ответ

0 голосов
/ 09 февраля 2019

Конечно, вы могли бы просто позвонить Regex.Replace 2 раза - первый раз заменив "глагол", второй раз заменив "окончание".

Если вам это не нравится, вы можете сделать это водно единственное регулярное выражение, подобное этому:

Regex.Replace("Godan verb with ru ending, Transitive Verb", "(v)erb|(end)ing", "$1$2", RegexOptions.IgnoreCase)

Используемое здесь регулярное выражение:

(v)erb|(end)ing

Соответствует либо «глаголу» и помещает «v» в группу 1, либо соответствует »окончание "и помещает" конец "в группу 2.

Замена - $1$2, что означает группу 1 и группу 2.

Допустим, вы также хотите заменить" переходный "на"trans ", вы можете легко изменить регулярное выражение на:

(v)erb|(end)ing|(trans)itive

и заменить на все три группы:

$1$2$3

Обратите внимание, что этот подход сохранит регистр, поэтому" Глагол "становится«V» и «глагол» становится «V».Если это нежелательно, вы можете передать MatchEvaluator для преобразования их в нижний регистр:

Regex.Replace(
            "Godan verb with ru ending, Transitive Verb", 
            "(v)erb|(end)ing",
            x => string.Join("", x.Groups.Cast<Group>().Skip(1).Select(y => y.Value)).ToLowerInvariant(),
            RegexOptions.IgnoreCase)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...