Вы можете сделать это с помощью следующего C# кода
string s = @"this <uc>faq</uc> deals with <uc>sp</uc>";
string result = Regex.Replace(s, "<uc>(.*?)</uc>", m => m.Groups[1].Value.ToUpper());
, который будет соответствовать началу и концу вашей разметки, но лениво, чтобы он не совпадал более чем с одним. Он захватывает часть, которую вы хотите сохранить, затем он берет совпадение, извлекает значение захвата и вводит его в верхнем регистре. Кроме того, вы можете включить RegexOptions.IgnoreCase
, если вам нужно сопоставить такие вещи, как "<UC>something</UC>"
.
Примечание: это не будет обрабатывать вложение, как "<uc>some<uc>stuff</uc></uc>"
, но я предполагаю, что вам не нужно иметь дело с чем-либо подобным.