C # Regex Заменить вопрос - PullRequest
3 голосов
/ 30 марта 2009

если у меня есть такая строка "Hello - World - Hello World"

Я хочу заменить символы, ПРЕВЫШАЮЩИЕ ПЕРВЫЙ экземпляр подстроки "-"

например. поэтому замена вышеприведенного на «SUPERDOOPER» оставляет: «SUPERDOOPER - Мир - Hello World»

Пока я получил это: "^ [^ -] * -"

Но это ВКЛЮЧАЕТ "-", что неправильно.

как это сделать с регулярным выражением, пожалуйста?

Ответы [ 6 ]

3 голосов
/ 30 марта 2009

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

(^[^-]*)(?: -)

Редактировать: подумав еще раз, это кажется немного излишним. Разве это не сработает?:

^[^-]*

Получает все не-тире символы между началом строки и продолжается до тех пор, пока она не ударяет тире? Или вам нужно исключить и пространство? Если это так, переходите к первому.

1 голос
/ 30 марта 2009

Почему вы думаете, что вам нужно использовать регулярное выражение для строковой операции, подобной этой?

Это проще и эффективнее:

str = "SUPERDOOPER" + str.Substring(str.IndexOf(" -"));
0 голосов
/ 30 марта 2009

Вы можете попробовать использовать регулярные выражения с положительным взглядом: "^[^-]*(?= - )". Насколько я знаю, C # поддерживает это. Это регулярное выражение будет соответствовать точно , что вы хотите. Вы можете узнать больше о предвидении, поиске и других передовых методах регулярных выражений в известной книге «Освоение регулярных выражений» .

0 голосов
/ 30 марта 2009

шаблон: ([^ -] +) (-. +)

Первое выражение соответствует любой серии символов, не включая тире. Тогда есть место. Второе выражение начинается с тире и пробела, за которыми следует серия из одного или нескольких «любых» символов

Замена: "Супердупер $ 2"

обеспечивает Superdooper - Мир - Привет, Мир

0 голосов
/ 30 марта 2009
Regex.Replace(input, @"(Hello)( -.*\1)", @"SUPERDOOPER$2");
0 голосов
/ 30 марта 2009

Не могли бы вы просто сделать это?

Regex.Replace ("Мир - Hello World", "^ [^ -] * -", "SUPERDOOPER -");

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