Как сделать сложную замену с помощью регулярных выражений в C #? - PullRequest
0 голосов
/ 16 марта 2019

Я встретил глубоко вложенную строку фигурных скобок, например:

{{{text1},{text2}},{{text3},{text4}}}

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

[[{text1},{text2}],[{text3},{text4}]]

как сделать эту замену с помощью функции Regex.Replace () в C #? спасибо

1 Ответ

2 голосов
/ 16 марта 2019

Это займет две замены, сначала замените каждый { на [, за которым следует {, а затем замените каждый } на ], которому предшествует граница без слов \B. Попробуйте этот код C #,

string input = "{{{text1},{text2}},{{text3},{text4}}}";
Regex regex = new Regex("{(?={)");
string result = regex.Replace(input, "[");
regex = new Regex("\\B}");
result = regex.Replace(result, "]");
Console.WriteLine("Result: " + result);

печать

Result: [[{text1},{text2}],[{text3},{text4}]]

Демо C # онлайн

Вы можете даже использовать положительный взгляд за (?<=})} вместо \\B} для второй замены, но я сознательно избегал его, чтобы сохранить решение простым и заставить его работать даже для языков, которые не поддерживают взгляды, но используют (?<=})} будет строго лучше \\B}. Выбирай как хочешь.

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