Если вы новичок в регулярных выражениях, вы можете попытаться сопоставить немного за раз, чтобы быть уверенным, что ваша строка будет соответствовать. Например, с учетом строки:
string text = "[deck=FirstText:13giljne]Large Multiline Text[/deck:13giljne]";
Напишите выражение, соответствующее первой части:
string firstPart = "\[deck=[^\]]+\]";
[^\]]+
говорит: "сопоставить все, что не является ]
символом".
Убедитесь, что оно соответствует:
Match m = Regex.Match(text, firstPart);
Затем придерживайтесь второй части:
string firstAndSecond = firstPart + "[^\[]*";
И проверить это.
Как только это сработает, вы можете добавить последнюю часть:
string search = firstAndSecond + "\[/deck[^\]]\]";
Окончательное регулярное выражение будет (\[deck=[^\]]+\])([^\[]+)(\[/deck[^\]]+\]
.
Я сгруппировал отдельные части, чтобы их было легче увидеть. Вы можете удалить группы, если хотите, или сделать их без захвата.
EDIT:
Я вижу из ваших правок, что вы хотите захватить FirstText
и три группы:
string search = "(\[deck=([^:]+):[^\]]+\])([^\[]+)(\[/deck[^\]]+\]";
Строка замены будет выглядеть примерно так:
string replace = "<span>$2</span>\n<div>$3</div>";