Нужна помощь в Regex Заменить C # - PullRequest
1 голос
/ 14 января 2010

Существует ли способ, которым регулярное выражение проверяет первый и последний символ, но заменяет только IV, а не пробелы.

Regex.Replace("This is IV item.", "[^A-Za-z0-9](IV)[^A-Za-z0-9]", "fourth");

Пожалуйста, не говорите мне о MatchEvaluator и других вещах, основанных на Match, мне нужно однострочное решение, и одна строка не означает объединение кода, это означает использование только метода Replace.

Также я говорю не только о пробелах, я говорю вообще о любом персонаже, например: (

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

Regex.Replace("This is IV item.", "([^A-Za-z0-9])(IV)([^A-Za-z0-9])", "$1fourth$3");

, поскольку это регулярное выражение является параметрами для некоторого кода, который автоматически будет автоматически использовать $ 1 для какой-то вещи, и я не хочу менять этот код, поэтому есть способ, чтобы $ 1 был только IV, проверяя, предыдущий персонаж также.

Ответы [ 3 ]

5 голосов
/ 14 января 2010
Regex.Replace("This is IV item.", @"\bIV\b", "fourth");
2 голосов
/ 14 января 2010

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

Regex.Replace("This is IV item.", "(?<=[^A-Za-z0-9])(IV)(?=[^A-Za-z0-9])", "fourth");
2 голосов
/ 14 января 2010

То, что вы ищете, это так называемые взгляд сзади и взгляд вперед . Попробуйте использовать (?<=\ )IV(?!<=\ ) в качестве шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...