Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpRgLAB 21 of 509 menu
◀ ▶

Просмотр вперед и назад в C#

Иногда условие для поиска находится рядом с нужным фрагментом, но само не должно попадать в замену. Для этого в регулярных выражениях используют просмотр вперед и назад.

Позитивный просмотр вперед (?=...) проверяет, что после найденного фрагмента стоит нужный текст. В следующем примере заменяется только "aaa" перед "x":

using System.Text.RegularExpressions; string txt = "aaax aaab"; string res = Regex.Replace(txt, @"aaa(?=x)", "!"); Console.WriteLine(res);

Негативный просмотр вперед (?!...) делает обратную проверку: после фрагмента не должно быть указанного текста. Теперь заменится "aaa" не перед "x":

using System.Text.RegularExpressions; string txt = "aaax aaab"; string res = Regex.Replace(txt, @"aaa(?!x)", "!"); Console.WriteLine(res);

Позитивный просмотр назад (?<=...) проверяет текст перед фрагментом. Заменим только "aaa", перед которым стоит буква "x":

using System.Text.RegularExpressions; string txt = "xaaa baaa"; string res = Regex.Replace(txt, @"(?<=x)aaa", "!"); Console.WriteLine(res);

Негативный просмотр назад (?<!...) проверяет, что перед найденным фрагментом нет указанного текста:

using System.Text.RegularExpressions; string txt = "xaaa baaa"; string res = Regex.Replace(txt, @"(?<!x)aaa", "!"); Console.WriteLine(res);

Дана строка, содержащая имена функций:

string txt = "func1() func2 test()";

Найдите имена, после которых сразу идут круглые скобки, и выведите их списком.

Дана строка с ценами:

string txt = "$10 20 $30";

Найдите числа, перед которыми стоит знак доллара, и выведите их списком.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить